多美加和JPA

多美加和JPA,jpa,Jpa,我正试图在我的书中加入JPA。我的persistence.xml如下所示 <persistence-unit name="test" transaction-type="JTA"> <jta-data-source>jdbc/testDB</jta-data-source> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class&

我正试图在我的书中加入JPA。我的persistence.xml如下所示

<persistence-unit name="test" transaction-type="JTA">
    <jta-data-source>jdbc/testDB</jta-data-source>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.TestEntity</class>
    <properties>
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql" value="true" />
    </properties>
  </persistence-unit>

jdbc/testDB
org.hibernate.ejb.HibernatePersistence
com.TestEntity
org.hibernate.dialogue.mysqldialogue
部署应用程序时,在控制台中看不到任何错误。我还可以看到将PU绑定到JNDI的日志

但是数据库中没有创建任何表

有人能帮我吗?

如果
persistence.xml
中没有指定
,那么容器将使用其默认的持久性提供程序。对于TomEE,其默认的持久性提供程序是OpenJPA

应该与您正在使用的持久性提供程序匹配

因此,如果您使用的是OpenJPA,那么您的
persistence.xml应该是这样的:(OpenJPA的
可以在以下位置找到)


如果您使用的是TOME(OpenJPA)附带的默认JPA实现,而不是Hibernate,那么您应该:

    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
org.apache.openjpa.persistence.PersistenceProviderImpl

为什么两个
嵌套在一起?对不起,这是一个输入错误。更正了。我认为这不是必需的。JPA 2.0规范:“provider元素是可选的,但如果应用程序依赖于正在使用的特定持久性提供程序,则应指定该元素。”因为OP发布的
persistence.xml
包含hibernate指定的属性,因此,我猜他正在使用hibernate作为持久性提供者,我的理解是:容器将为您提供其默认的JPA提供者,但如果您需要一些特定的(即本例中的EclipseLink),请在
中定义它。你认为肯怎么样?@Piotr Nowicki:我认为你是对的。如果未指定
,则容器将选择其默认的持久性提供程序。在以下内容中进行验证:
http://openejb.apache.org/openjpa.html
。如果未指定
,则TomEE将使用其默认的持久性提供程序,即OpenJPA。感谢回复。我无法让它与Hibernate一起工作。我确实提到了作为hibernate的提供者,并将所有JAR添加到Catlina_home/lib中。它不提供任何例外,但仍然不创建任何实体。
 <persistence-unit name="test" transaction-type="JTA">
    <jta-data-source>jdbc/testDB</jta-data-source>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.TestEntity</class>
    <properties>
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql" value="true" />
    </properties>
  </persistence-unit>
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>