Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将TomEE与Hibernate一起使用_Java_Hibernate_Jpa_Openejb_Apache Tomee - Fatal编程技术网

Java 如何将TomEE与Hibernate一起使用

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

我创建了一个非常简单的应用程序,带有持久性上下文(hibernate作为提供程序),可以从数据库中读取一些值。我将Eclipse与Maven一起使用

首先,我明白了

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
ehcache 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
1。将所需的Hibernate.jars复制到
/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;