Не удалось инициализировать диспетчер сущностей через JUNIT

Я пытаюсь создать диспетчер сущностей в своем классе 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 ****
            }
        }

Привет. Расскажите, что вы пытаетесь протестировать? Должен быть создан менеджер сущностей в классе test4, но это не обязательно означает, что он будет внедрен в ваше приложение.

WeGa 09.06.2018 09:02

@WeGa Я запустил jboss-сервер моего приложения на резервной копии, и после этого я запускаю свой индивидуальный тест junit

sdsd dsds 09.06.2018 09:05

Я не вижу никаких тестов junit. setUpClass () только подготавливает среду и ничего не тестирует. Я не знаком с этим Hibernate API, но я хочу понять вашу конечную цель (вы хотите протестировать Hibernate? X)), возможно, вам вообще не нужно запускать entityManager

WeGa 09.06.2018 09:06

позвольте мне добавить это, а также протестировать то же самое

sdsd dsds 09.06.2018 09:07

@WeGa Спасибо за совет, но моя конечная цель состоит в том, что я хочу инициализировать диспетчер сущностей JPA, прошу вас, пожалуйста, закодируйте метод настройки, чтобы я мог немного понять

sdsd dsds 09.06.2018 09:10

Итак, вы хотите просто отладить диспетчер сущностей, чтобы посмотреть, как он работает? Может быть, тогда вам подойдет простое приложение с реальным менеджером сущностей, внедренным в основной класс?

WeGa 09.06.2018 09:22

@WeGa, да, еще раз спасибо, поэтому прошу вас показать это

sdsd dsds 09.06.2018 09:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
609
2

Ответы 2

Вы смотрели в документы для 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;
        }
    };
}

}

Другие вопросы по теме