【问题标题】:Various errors when using Hibernate as my JPA provider使用 Hibernate 作为我的 JPA 提供程序时的各种错误
【发布时间】:2016-05-06 10:57:04
【问题描述】:

我正在尝试 JPA,所以我遵循了指南,并尝试使用 Hibernate 自己完成。我创建了一个只有两个变量的实体“testEntity”,并创建了一个带有 main 方法的测试类来测试它。

我的连接池有一个 JDBC 连接,该连接已经过测试并且可以正常工作。我将我的持久性单元配置为使用它。检查我的 persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">

<persistence-unit name="PruebaswebPU" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider    </provider>
    <jta-data-source>java:app/jdbc/nuevaConexion</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

我在我的测试类中使用它:

  EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("PruebaswebPU");
        EntityManager entitymanager = emfactory.createEntityManager();
        entitymanager.getTransaction().begin();

        testEntity ent = new testEntity();
        ent.setId(5l);
        ent.setNombre("Nombraco");

        entitymanager.persist(ent);
        entitymanager.getTransaction().commit();

        entitymanager.close();
        emfactory.close();

...但我收到了一堆错误:

may 06, 2016 12:52:26 PM org.hibernate.ejb.HibernatePersistence logDeprecation WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
may 06, 2016 12:52:26 PM org.hibernate.ejb.HibernatePersistence logDeprecation WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead. 
may 06, 2016 12:52:26 PM org.hibernate.ejb.HibernatePersistence logDeprecation WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead. 

Exception in thread "main" javax.persistence.PersistenceException: Unable to locate persistence units   
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:99) 
    at org.hibernate.ejb.HibernatePersistence.getEntityManagerFactoryBuilderOrNull(HibernatePersistence.java:93)
    at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:86)
    at org.hibernate.ejb.HibernatePersistence.getEntityManagerFactoryBuilderOrNull(HibernatePersistence.java:101)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:67)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)     
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at testing.samplePersistence.main(samplePersistence.java:20)

Caused by: javax.persistence.PersistenceException: Invalid persistence.xml. Error parsing XML [line : -1, column : -1] : cvc-complex-type.2.4.b: El contenido del elemento 'persistence' no está completo. Se esperaba uno de '{"http://xmlns.jcp.org/xml/ns/persistence":persistence-unit}'.
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.validate(PersistenceXmlParser.java:377)     
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.loadUrl(PersistenceXmlParser.java:310)  
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.parsePersistenceXml(PersistenceXmlParser.java:114) 
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.doResolve(PersistenceXmlParser.java:104)    
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.locatePersistenceUnits(PersistenceXmlParser.java:86) 
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:95)    ... 8 more 
C:\Users\hp\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 BUILD FAILED (total time: 0 seconds)

我错过了什么吗?提前致谢!

编辑:

Netbeans 用于该项目的自动添加库的小截图:

Libraries

【问题讨论】:

  • persistence.XML 中存在问题。可能是第一个位置的不可打印字符
  • 这似乎不是问题;该文件在开头没有任何内容。

标签: hibernate jpa persistence.xml


【解决方案1】:

您的问题是persistence.xml 不完整。您可能需要一些额外的部分。有关更多信息,您可以通过此tutorial

您的persistence.xml 中也有额外的空间。

persistence.xml 中的第一个更改

<provider>org.hibernate.jpa.HibernatePersistenceProvider    </provider>

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

然后运行。如果有任何问题,请告诉我。

更新:

请您更改以下版本:

<persistence version="2.0" 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_2_0.xsd">

【讨论】:

  • @PabloVicenteAlonso 请检查更新并告诉我。
  • 你的hibernate和jpa版本是什么。请问可以补充吗? @PabloVicenteAlonso
  • 4.3 和 2.1 我猜。观看 NetBeans 设法导入到我的项目中的预添加库的图像。
  • gist.github.com/aziz781/1336488 请您比较一下您的代码并进行一些修改。希望对您有所帮助。
  • 尝试使用您的代码作为模板,但它也不起作用...与以往相同的消息。
猜你喜欢
  • 2013-01-15
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 2011-06-25
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多