Hibernate 4.3.6+;Glassfish 4.1+;JPA 2.1
我试图在JavaEE7应用程序中从EclipseLink迁移到Hibernate,但遇到了一些我无法解决的问题 这里是我的环境:Hibernate 4.3.6+;Glassfish 4.1+;JPA 2.1,hibernate,glassfish,hibernate-4.x,jpa-2.1,glassfish-4.1,Hibernate,Glassfish,Hibernate 4.x,Jpa 2.1,Glassfish 4.1,我试图在JavaEE7应用程序中从EclipseLink迁移到Hibernate,但遇到了一些我无法解决的问题 这里是我的环境: 玻璃鱼4.1 休眠4.3.6 Java 1.8.0_20 我还使用: EE 7 CDI JPA 2.1 最终,我们的目标是能够使用Java8流和Lambdas,因为我们的应用程序有很多集合操作,而EclipseLink目前不支持流。我们有另一个使用Hibernate(在Wildfly上)运行的项目可以实现这一点,但希望我们可以迁移到Hibernate,而不是交
- 玻璃鱼4.1
- 休眠4.3.6
- Java 1.8.0_20
- EE 7
- CDI
- JPA 2.1
<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>
org.hibernate.jpa.HibernatePersistenceProvider
jdbc/myds
假的
<property name="hibernate.archive.autodetection" value="class, hbm"/>
并在persistence.xml中单独指定PU中的类,没有任何改进
谢谢您的帮助。您说得对,这应该可以与您的设置配合使用 然而,可能是由于某种原因Hibernate无法发现您的实体 您可以在
persistence.xml
中使用此属性显式启用Hibernate的实体自动发现:
<property name="hibernate.archive.autodetection" value="class, hbm"/>
这也应该是默认值,即使您没有声明它
如果您的实体类位于一个单独的jar文件中,您必须像这样声明它:
<property name="hibernate.archive.autodetection" value="class, hbm, jar"/>
<class>com.model.Entity</class>
如果没有任何帮助,您可以像下面这样手动声明您的类:
<property name="hibernate.archive.autodetection" value="class, hbm, jar"/>
<class>com.model.Entity</class>
com.model.Entity
在重新部署项目之前,不要忘记清理和构建项目
另请参见:
我希望你喜欢。你是把它包装成战争还是耳朵?战争-但是现在它在发展过程中是一场爆炸性的战争。你在玻璃鱼4中加入冬眠有没有进一步的进展?@peter_pilgrim我们暂时把它放在桌面上,现在仍然处于日食状态。我们的计划是迁移到WildFly,以便获得更好的Java8支持。运气不好,但是我现在看到了两个不同的异常,1)我以前遇到的IllegalRugmentException,2)稍微不同的变体“java.lang.IllegalStateException:EntityManagerFactory已关闭”。我开始怀疑GF 4.1和Hibernate 4.3.6之间是否存在缺陷/不兼容。我还应该注意,在启动服务器和部署时出现错误#1,在尝试重新部署时出现错误#2。另外-我没有提到。。我也在使用CDI,这可能也会对这一点造成影响。