javax.persistence.PersistenceException:没有名为Eclipselink_JPA的EntityManager的持久性提供程序
我是JPA的新手,对此我很迷茫 我在netbeans中创建了一个企业项目来进行一些测试。使用向导创建了此持久性单元。我添加了一个正常工作的JNDI连接,并且已经过测试:javax.persistence.PersistenceException:没有名为Eclipselink_JPA的EntityManager的持久性提供程序,jpa,eclipselink,Jpa,Eclipselink,我是JPA的新手,对此我很迷茫 我在netbeans中创建了一个企业项目来进行一些测试。使用向导创建了此持久性单元。我添加了一个正常工作的JNDI连接,并且已经过测试: <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchem
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
<persistence-unit name="persistencia" transaction-type="JTA">
<jta-data-source>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>
然后,尝试让服务CreateEntity1进行尝试,并尝试通过调用它在DB上创建新元素:
public class CreateEntity1 {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
Entity1 ent = new Entity1( );
ent.setId(1);
ent.setNombre("Mi entidad");
ent.setNumero(123);
entitymanager.persist( ent );
entitymanager.getTransaction( ).commit( );
entitymanager.close( );
emfactory.close( );
}
}
。。。但它不起作用。我得到以下错误:
线程“main”javax.persistence.PersistenceException中的异常:否
EntityManager的持久性提供程序,名为Eclipselink_JPA,位于
persistence.persistence.createEntityManagerFactory(persistence.java:85)
在
persistence.persistence.createEntityManagerFactory(persistence.java:54)
位于service.CreateEntity1.main(CreateEntity1.java:22)
C:\Users\hp\AppData\Local\NetBeans\Cache\8.1\executor snippets\run.xml:53:
Java返回:1生成失败(总时间:0秒)
我做错了什么
编辑:我将持久性提供程序的名称改为好的,但现在我遇到了一系列严重的错误
编辑2:将所有内容更改为休眠类型。仍然得到一个巨大的错误:
线程“main”本地异常堆栈中的异常:异常
[EclipseLink-30009](Eclipse持久性服务)-
2.6.1.v20150605-31e8258):org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
异常描述:尝试加载时引发异常
url处的持久化单元:
文件:/C:/Users/hp/Documents/NetBeansProjects/PruebasJ2EE/PruebasJ2EE ejb/build/classes/
内部异常:异常[EclipseLink-30004](Eclipse持久性)
服务-2.6.1.v20150605-31e8258):
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
异常描述:处理时引发异常
URL中的persistence.xml:
文件:/C:/Users/hp/Documents/NetBeansProjects/PruebasJ2EE/PruebasJ2EE ejb/build/classes/
内部例外情况:(1)程序指令
请在此处输入“[xX][mM][lL]”不允许
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionLoadingFromUrl(PersistenceUnitLoadingException.java:100)
在
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:616)
在
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:500)
在
org.eclipse.persistence.internal.jpa.deployment.jpainInitializer.findpersistenceUninitInfo(jpainInitializer.java:178)
在
org.eclipse.persistence.internal.jpa.deployment.jpainInitializer.findpersistenceUninitInfo(jpainInitializer.java:160)
在
org.eclipse.persistence.internal.jpa.deployment.jpainInitializer.findPersistenceUnitInfo(jpainInitializer.java:141)
在
org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:188)
在
persistence.persistence.createEntityManagerFactory(persistence.java:79)
在
persistence.persistence.createEntityManagerFactory(persistence.java:54)
在service.CreateEntity1.main(CreateEntity1.java:22)处,由以下原因引起:
异常[EclipseLink-30004](Eclipse持久性服务)-
2.6.1.v20150605-31e8258):org.eclipse.persistence.exceptions.PersistenceUnitLoadingException
异常描述:处理时引发异常
URL中的persistence.xml:
文件:/C:/Users/hp/Documents/NetBeansProjects/PruebasJ2EE/PruebasJ2EE ejb/build/classes/
内部例外情况:(1)程序指令
请在此处输入“[xX][mM][lL]”不允许
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException.exceptionProcessingPersistenceXML(PersistenceUnitLoadingException.java:118)
在
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:665)
在
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:614)
... 8更多的原因是:(1)教育目的地
不允许在以下位置使用“[xX][mM][lL]”的过程:
org.eclipse.persistence.internal.jpa.deployment.xml.parser.XMLExceptionHandler.error(XMLExceptionHandler.java:28)
在
org.eclipse.persistence.internal.jpa.deployment.xml.parser.XMLExceptionHandler.fatalError(XMLExceptionHandler.java:34)
在
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:180)
在
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
在
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
在
com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
在
com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPIData(XMLScanner.java:723)
在
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanPIData(XMLDocumentFragmentScannerImpl.java:1018)
在
com.sun.org.apache.xerces.internal.impl.xmlcanner.scanPI(xmlcanner.java:691)
在
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:912)
在
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
在
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
在
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
在
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
在
com.sun.org.apache.xerces.internal.parsers.xml11配置
public class CreateEntity1 {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
Entity1 ent = new Entity1( );
ent.setId(1);
ent.setNombre("Mi entidad");
ent.setNumero(123);
entitymanager.persist( ent );
entitymanager.getTransaction( ).commit( );
entitymanager.close( );
emfactory.close( );
}
}
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
<persistence-unit name="persistencia" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
...