Cześć. Mam taki problem, że nie wiem jak wstrzyknąć entity managera do mojej klasy testowej. Chodzi o to, że ani @PersistenceContext ani @PersistenceUnit ani zwykłe manualne utworzenie entity manager nie działa i leci mi exception, że entity manager is null. Poniżej konfiguracja springowa, klasa testowa i exception.
@Configuration
public class JpaConfig {
@Bean
public LocalContainerEntityManagerFactoryBean createEMF(JpaVendorAdapter adapter){
LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
Map<String, String> properties = new HashMap<>();
properties.put("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/shop?createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC");
properties.put("javax.persistence.jdbc.user", "root");
properties.put("javax.persistence.jdbc.password", "ErykSkoczylas1");
properties.put("javax.persistence.jdbc.driver", "com.mysql.cj.jdbc.Driver");
properties.put("javax.persistence.schema-generation.database.action", "drop-and-create");
emf.setPersistenceUnitName("shop-database");
emf.setJpaPropertyMap(properties);
emf.setJpaVendorAdapter(adapter);
emf.setPackagesToScan("com.database.models");
return emf;
}
@Bean
public JpaVendorAdapter createVendorAdapter() {
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
adapter.setDatabase(Database.MYSQL);
adapter.setShowSql(true);
return adapter;
}
@Bean
public TransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
return jpaTransactionManager;
}
}
KLASA TESTOWA:
public class CustomerServiceTest {
private AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringJpaApplication.class);
private CustomerService customerService = ctx.getBean(CustomerService.class);
@PersistenceUnit
private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
EXCEPTION:
java.lang.NullPointerException: Cannot invoke "javax.persistence.EntityManager.createQuery(String, java.lang.Class)" because "this.entityManager" is null