【发布时间】: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 用于该项目的自动添加库的小截图:
【问题讨论】:
-
persistence.XML 中存在问题。可能是第一个位置的不可打印字符
-
这似乎不是问题;该文件在开头没有任何内容。
标签: hibernate jpa persistence.xml