【发布时间】:2010-02-18 12:32:42
【问题描述】:
我正在玩弄 GWT(不知道这是否重要)和 Hibernate。我已经在 META-INF 中创建了一个文件 persistence.xml ,其中包含其他配置: 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>
...
【问题讨论】:
-
你确定你在类路径上没有任何其他persistence.xml(听起来很奇怪,因为你拿起了“gwt”持久性单元)
-
你怎么知道它选择了DataNucleus?
-
日志显示:15:11:48,048 INFO Persistence:77 - DataNucleus Persistence Factory - 供应商:“DataNucleus”版本:“1.1.5”15:11:48,048 INFO Persistence:77 - DataNucleus Persistence工厂初始化数据存储 URL="" driver="" userName="" 这绝对是正确的 xml 文件。因为当我将“gwt”更改为其他内容时,我会更早地收到错误
-
我开始猜测我的 JPA/JTA 实现有误。 javax.persistence 在名为 geronimo-jpa.jar 的 Jar 文件中定义。 Hibernate 需要什么 jar 文件?我下载了整个 Hibernate 发行版,并假设其中包含 JPA 实现(如他们网站上所述)。我正在使用hibernate 3.5 - 有人能指出我为Hibernate 正确的JPA 实现吗?谢谢
标签: java hibernate gwt jpa datanucleus