У меня есть файл 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.