Мой вопрос:
Есть ли способ заставить Spring / JPA автоматически обнаруживать классы, помеченные @Entity?
Справочная информация:
Это моя конфигурация entityManagerFactory
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
</bean>
... а это мой файл persistence.xml ...
<persistence-unit name="foo">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate..." value="..."/>
<property ...
</properties>
</persistence-unit>
Эта конфигурация работает. Но: когда я добавляю следующую строку в мою конфигурацию entityManagerFactory
<property name="persistenceXmlLocation" value="META-INF/persistence.xml" />
JPA не находит мои классы с комментариями @Entity. Итак, я получаю исключения, подобные этой:
java.lang.IllegalArgumentException: Unknown entity: foo.Bar
где foo.Bar - класс, аннотированный @ javax.persistence.Entity
Когда я сейчас добавлю
<class>foo.Bar</class>
к моему persistence.xml все снова хорошо. Но почему я должен указывать свои классы в файле persistence.xml при использовании persistenceXmlLocation, а в противном случае - нет?
Примечание. Вы можете спросить, почему я хочу использовать persistenceXmlLocation: Это решило бы эту проблему .