Я пытаюсь создать диспетчер сущностей в своем классе junit, но мне это не удается, пока, пожалуйста, не посоветуйте, как я могу преодолеть это ниже, это конфигурация моего диспетчера сущностей
<bean id = "entityManagerFactory"
class = "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name = "dataSource" ref = "dataSource" />
<property name = "persistenceUnitName" value = "aaa" />
<property name = "jpaVendorAdapter">
<bean class = "org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name = "database" value = "ORACLE" />
</bean>
</property>
<property name = "jpaPropertyMap">
<map>
<entry key = "hibernate.dialect" value = "org.hibernate.dialect.OracleDialect" />
<entry key = "hibernate.cache.use_query_cache" value = "false" />
<entry key = "hibernate.show_sql" value = "false" />
<entry key = "hibernate.use_sql_comments" value = "false" />
<entry key = "hibernate.format_sql" value = "false" />
</map>
</property>
</bean>
<bean id = "transactionManager" class = "org.springframework.orm.jpa.JpaTransactionManager">
<property name = "entityManagerFactory" ref = "entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager = "transactionManager" />
<context:component-scan base-package = "com.ytr.cyt.tc.*" />
и ниже приведен класс junit, в котором я пытаюсь создать диспетчер сущностей, но все еще не могу успешно это сделать. Пожалуйста, посоветуйте, как преодолеть это, еще одна вещь, которую я заметил, что в моей конфигурации xml junit entityManager нет определенный
@ContextConfiguration(locations = { "applicationContext.xml" })
@TransactionConfiguration(defaultRollback=true)
@Transactional
public class test4 {
@PersistenceContext
protected static EntityManager em ;
//***** enetity manager is still null ****
@BeforeClass
public static void setUpClass() throws Exception {
if (em == null) {
em = (EntityManager) Persistence.createEntityManagerFactory("aaa").createEntityManager();
System.out.println(em.toString());
//***** enetity manager is still null ****
}
}
@WeGa Я запустил jboss-сервер моего приложения на резервной копии, и после этого я запускаю свой индивидуальный тест junit
Я не вижу никаких тестов junit. setUpClass () только подготавливает среду и ничего не тестирует. Я не знаком с этим Hibernate API, но я хочу понять вашу конечную цель (вы хотите протестировать Hibernate? X)), возможно, вам вообще не нужно запускать entityManager
позвольте мне добавить это, а также протестировать то же самое
@WeGa Спасибо за совет, но моя конечная цель состоит в том, что я хочу инициализировать диспетчер сущностей JPA, прошу вас, пожалуйста, закодируйте метод настройки, чтобы я мог немного понять
Итак, вы хотите просто отладить диспетчер сущностей, чтобы посмотреть, как он работает? Может быть, тогда вам подойдет простое приложение с реальным менеджером сущностей, внедренным в основной класс?
@WeGa, да, еще раз спасибо, поэтому прошу вас показать это




Вы смотрели в документы для Hibernate? Есть пример, думаю, это то, что вам нужно. Также есть примеры использования entityManeger с такими сущностями, как это
EntityManagerFactory можно инициализировать программно следующим образом:
public class PersistenceTest {
private static EntityManagerFactory emf;
@BeforeClass
public static void init() {
Map<String, String> properties = new HashMap<>();
properties.put("javax.persistence.jdbc.driver", "oracle.jdbc.OracleDriver");
properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@127.0.0.1:1521:XE");
properties.put("javax.persistence.jdbc.user", "SYS AS SYSDBA");
properties.put("javax.persistence.jdbc.password", "root");
properties.put("javax.persistence.transactionType", "RESOURCE_LOCAL");
properties.put("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.format_sql", "true");
properties.put("hibernate.hbm2ddl.auto", "create");
emf = new HibernatePersistenceProvider().createContainerEntityManagerFactory(createPersistenceUnitInfo(), properties);
}
private static PersistenceUnitInfo createPersistenceUnitInfo() {
return new PersistenceUnitInfo() {
@Override
public String getPersistenceUnitName() {
return "test-persistence-unit";
}
@Override
public String getPersistenceProviderClassName() {
return "org.hibernate.jpa.HibernatePersistenceProvider";
}
@Override
public PersistenceUnitTransactionType getTransactionType() {
return PersistenceUnitTransactionType.RESOURCE_LOCAL;
}
@Override
public DataSource getJtaDataSource() {
return null;
}
@Override
public DataSource getNonJtaDataSource() {
return null;
}
@Override
public List<String> getMappingFileNames() {
return Collections.emptyList();
}
@Override
public List<URL> getJarFileUrls() {
return Collections.emptyList();
}
@Override
public URL getPersistenceUnitRootUrl() {
return null;
}
@Override
public List<String> getManagedClassNames() {
return Arrays.asList(
"com.package.name.TestEntity");
}
@Override
public boolean excludeUnlistedClasses() {
return false;
}
@Override
public SharedCacheMode getSharedCacheMode() {
return null;
}
@Override
public ValidationMode getValidationMode() {
return null;
}
@Override
public Properties getProperties() {
return new Properties();
}
@Override
public String getPersistenceXMLSchemaVersion() {
return null;
}
@Override
public ClassLoader getClassLoader() {
return null;
}
@Override
public void addTransformer(ClassTransformer transformer) {
}
@Override
public ClassLoader getNewTempClassLoader() {
return null;
}
};
}
}
Привет. Расскажите, что вы пытаетесь протестировать? Должен быть создан менеджер сущностей в классе test4, но это не обязательно означает, что он будет внедрен в ваше приложение.