Как настроить Spring вместе с persistence.xml для сканирования сущностей - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть файл test-persistence.xml в каталоге src / test / resources.Содержимое этого файла:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
             xmlns="http://java.sun.com/xml/ns/persistence"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                                http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="mmTest" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"/>
            <property name="javax.persistence.jdbc.user" value="sa"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        </properties>
    </persistence-unit>
</persistence>

Моя конфигурация Spring выглядит следующим образом:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="packagesToScan" value="com.sample"/>
    <property name="persistenceUnitName" value="mmTest"/>
    <property name="persistenceUnitManager" ref="persistenceUnitManager"/>
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
</bean>
<bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
    <property name="persistenceXmlLocation" value="classpath*:test-persistence.xml"/>
</bean>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="true"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

Когда я пытаюсь запустить тест JUnit с этим набором конфигурации контекста, я получаю исключение:

java.lang.IllegalArgumentException: неизвестный объект: com.sample.SampleEntity

Возможно ли иметь файл persistence.xml для тестов и настроить Spring для сканирования на наличие классовс @Entity?Я не хочу использовать обнаружение классов JPA, таких как jar-файл или перечисленные классы.Я хочу использовать Spring, чтобы открыть эти классы.

Странно, когда я перемещаю test-persistence.xml в папку: / src / main / resources / META-INF, тогда все работает правильно.Однако я не хочу тестировать определенную конфигурацию внутри src / main.

В настоящее время я решил эту проблему, указав DataSource вместо persistenceUnitManager и persistenceUnitName.

Но я хотел бы знать, какрешить ее без использования DataSource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...