Я пытаюсь перейти с EclipseLink на Hibernate в своем приложении Java EE 7 и столкнулся с некоторыми проблемами, которые не могу понять.
Вот моя среда:
- Стеклянная рыба 4.1
- Спящий режим 4.3.6
- Java 1.8.0_20
Я также использую:
- EE 7
- КДИ
- JPA 2.1
В конечном счете, наша цель — иметь возможность использовать Java 8 Streams и Lambdas, поскольку в нашем приложении много манипуляций с наборами, а EclipseLink в настоящее время не поддерживает Streams. У нас есть еще один проект, работающий с Hibernate (на Wildfly), который делает это, но мы надеялись, что сможем просто перейти на Hibernate вместо замены всего стека Java EE App Server.
До сих пор я делал следующее, но в основном следовал приведенным здесь инструкциям: https://coderwall.com/p/e5fxrw
Я установил необходимые JAR-файлы Hibernate и менеджер сущностей в свой каталог /glassfish/lib.
Я изменил свой блок сохранения в файле persistence.xml следующим образом:
<persistence-unit name="mypu" transaction-type="JTA"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <jta-data-source>jdbc/myds</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.transaction.jta.platform" value="org.hibernate.engine.transaction.jta.platform.internal.SunOneJtaPlatform" /> <property name="hibernate.transaction.factory_class" value="org.hibernate.engine.transaction.internal.jta.JtaTransactionFactory"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit>
Теперь первое исключение, которое я получаю, это "java.lang.IllegalArgumentException: Not a entity:..." Однако все мои классы аннотированы с помощью @Entity и работали в EclipseLink. Я не думаю, что мне нужно перечислять свои классы с exclude-unlisted-classes = false, и я действительно хотел бы этого избежать.
изменить: по предложению unwichtich я попытался добавить:
<property name="hibernate.archive.autodetection" value="class, hbm"/>
и индивидуальное указание классов в PU в файле persistence.xml без каких-либо улучшений.
Спасибо за любую помощь.