Java 如何将TomEE与Hibernate一起使用
我创建了一个非常简单的应用程序,带有持久性上下文(hibernate作为提供程序),可以从数据库中读取一些值。我将Eclipse与Maven一起使用 首先,我明白了Java 如何将TomEE与Hibernate一起使用,java,hibernate,jpa,openejb,apache-tomee,Java,Hibernate,Jpa,Openejb,Apache Tomee,我创建了一个非常简单的应用程序,带有持久性上下文(hibernate作为提供程序),可以从数据库中读取一些值。我将Eclipse与Maven一起使用 首先,我明白了 Caused by: org.apache.openejb.OpenEJBException: java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.Persistenc
Caused by: org.apache.openejb.OpenEJBException: java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider:
根据这个话题,
我排除了hibernate-jpa-2.0-api。现在,我的依赖项看起来
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.3.Final</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
但是TransactionManagerLookup在hibernate核心中。
请告诉我,在TomEE中使用hibernate应该如何查找pom.xml?试试以下方法:
加:
/lib/antlr-2.7.7.jar
/lib/dom4j-1.6.1.jar
/lib/ehcache-core-2.5.1.jar
/lib/ehcache-terracotta-2.5.1.jar
/lib/hibernate-commons-annotations-4.0.1.Final.jar
/lib/hibernate-core-4.1.4.Final.jar
/lib/hibernate-ehcache-4.1.4.Final.jar
/lib/hibernate-entitymanager-4.1.4.Final.jar
/lib/hibernate-validator-4.3.0.Final.jar
/lib/jboss-logging-3.1.0.GA.jar
/lib/terracotta-toolkit-1.4-runtime-4.1.0.jar
/lib/asm-3.2.jar
/lib/bval-core-0.4.jar
/lib/bval-jsr303-0.4.jar
/lib/commons-lang-2.6.jar
/lib/openjpa-2.2.0.jar
/lib/serp-1.13.1.jar
/lib
根据文档(),以下内容就足够了,事实上它们为我工作:
<tomee-home>/lib/antlr-2.7.7.jar
<tomee-home>/lib/dom4j-1.6.1.jar
<tomee-home>/lib/hibernate-commons-annotations-4.0.2.Final.jar
<tomee-home>/lib/hibernate-core-4.2.21.Final.jar
<tomee-home>/lib/hibernate-entitymanager-4.2.21.Final.jar
<tomee-home>/lib/hibernate-validator-4.3.2.Final.jar
<tomee-home>/lib/javassist-3.18.1-GA.jar
<tomee-home>/lib/jboss-logging-3.1.0.GA.jar
3.定义数据库连接
编辑/conf/tomee.xml
:
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost:3306/my_dbname?autoReconnect=true
用户名foo
密码栏
validationQuery=选择1
真的吗
您还可以将上述…
定义放入WEB-INF/resources.xml
中,并将其与应用程序一起提供:
4.JTA数据源
既然您告诉了TomEE如何建立连接,请在/src/main/java/META-INF/persistence.xml
中定义JTA数据源:
org.hibernate.ejb.HibernatePersistence
java:openejb/Resource/myJtaDatabase
5.开始使用JPA
在CDIBean或EJB中获得EntityManager
,如下所示:
@PersistenceContext(unitName = "my_persistence_unit")
private EntityManager em;
最后说明
Hibernate版本4.3+
我正在使用Hibernate4.2.21(JPA2.0,JavaEE6)和Tomee1.7.2。任何大部头1.7.x、1.6.x和1.5.x都适用。但是,您不能使用Hibernate4.3+(JPA2.1/JavaEE7),因为Tomee1.7.x及以下版本仅支持JavaEE6。如果您真的想将Java EE 7功能与TomEE一起使用,这篇博文可能会有所帮助:
大部头1.5.x
TomEE 1.5.x已经包含了一个
javassist-.jar
,所以您不必复制它。是的,只需将hibernate-jpa-2.1-api-1.0.0.Final.jar放到适合我的TomEE lib文件夹中。使用TomEE,我正在尝试使用hibernate作为jpa提供者运行简单的应用程序。现在,我不知道应该包括哪些依赖项,排除哪些依赖项。TomEE提供的库与maven提供的库存在一些冲突,这就是为什么我必须排除一些库的原因。你能在“TransactionManagerLookup”异常上展开stacktrace吗?我粘贴了整个控制台,我有完全相同的问题,我真的在等待解决方案!在我禁用maven依赖项并将所需的jar(hibernate、antlr)复制到tomee/lib文件夹后,它就开始工作了。通过谷歌搜索,我发现了另一种对使用maven的开发人员有用的方法。您只需使用configuration/libs/lib
(查看)添加对tomee maven插件的依赖项,这些文件也可以在war文件中提供吗?嘿,Axel。让JPA提供商参与战争应该是可行的
@PersistenceContext(unitName = "my_persistence_unit")
private EntityManager em;