Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 persistence.xml忽略Hibernate并选择DataNucleus_Java_Hibernate_Gwt_Jpa_Datanucleus - Fatal编程技术网

Java persistence.xml忽略Hibernate并选择DataNucleus

Java persistence.xml忽略Hibernate并选择DataNucleus,java,hibernate,gwt,jpa,datanucleus,Java,Hibernate,Gwt,Jpa,Datanucleus,我在玩弄GWT(不知道这是否重要)和休眠。我已经在META-INF中创建了一个文件persistence.xml,其中包含(amoung)其他配置行: org.hibernate.ejb.HibernatePersistence 但是,当我启动EntityManager时,它选择DataNucleus而不是Hibernate(后者会失败,因为它没有安装(jar不在类路径中)) Java代码是: EntityManagerFactory factory = Persistence.createEn

我在玩弄GWT(不知道这是否重要)和休眠。我已经在META-INF中创建了一个文件persistence.xml,其中包含(amoung)其他配置行: org.hibernate.ejb.HibernatePersistence 但是,当我启动EntityManager时,它选择DataNucleus而不是Hibernate(后者会失败,因为它没有安装(jar不在类路径中))

Java代码是:

EntityManagerFactory factory = Persistence.createEntityManagerFactory("gwt");
EntityManager em =factory.createEntityManager();
EntityTransaction transacation = em.getTransaction();
transacation.begin();
Campaign campaign = new Campaign();
campaign.setName("Test");
em.persist(campaign);
transacation.commit();
配置文件包含:

<?xml version="1.0" encoding="UTF-8"?>
<persistence
  xmlns="http://java.sun.com/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
  http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
  version="1.0">
  <persistence-unit name="gwt" transaction-type="JTA">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/DefaultDS</jta-data-source>
      <properties>
  ...

org.hibernate.ejb.HibernatePersistence
java:/DefaultDS
...

那么告诉我,你在GAE/J上使用这个吗? DataNucleus显然位于类路径中,因为它在您的日志中说明了这一点。

引用Google插件for Eclipse文档中的部分:

使用新建Web应用程序向导创建项目 新建Web应用程序项目向导 允许您创建新网站 使用GoogleWeb的应用程序 工具包(GWT)和/或谷歌应用程序 发动机:


您是否在项目创建时选择了使用谷歌应用程序引擎?如果是,请不要这样做。

我使用了错误的JPA包装类。我以前使用geronimo-jpa.jar,最后使用了Glassfish的javax-persistence.jar。
不知道这是否是一个很好的解决方案,但至少是一个。

您确定类路径上没有任何其他persistence.xml(因为您选择了“gwt”持久化单元,所以听起来很奇怪)您如何判断它选择了DataNucleus?日志显示:15:11:48048信息持久化:77-DataNucleus持久化工厂-供应商:“DataNucleus”版本:“1.1.5”15:11:48048信息持久性:77-DataNucleus持久性工厂已针对数据存储URL=”“driver=”“userName=”“进行初始化,这绝对是正确的xml文件。因为当我把“gwt”改成其他东西时,我会更早地发现错误,我开始猜测我的JPA/JTA实现是错误的。持久性是在一个名为geronimo-jpa.Jar的Jar文件中定义的。Hibernate需要什么jar文件?我下载了整个Hibernate发行版,并假设包括JPA实现(如他们网站上所说)。我正在使用hibernate 3.5-有人能告诉我hibernate的正确JPA实现吗?谢谢,我在Eclipse/GWT插件环境中使用了它,afaik模拟了appengine。我对hibernate和GWT都是新手。我正在用main方法运行上面的脚本,而不是在appengine的上下文中运行。GAE/J Eclipse插件用于appengine,因此是BigTable;不知道GWT插件是什么。显然,Hibernate不会为BigTable提供持久性。DataNucleus是BigTable的JPA持久性的唯一提供者。如果不打算持久化到BigTable,建议您解决什么是您的开发环境