[英]No persistence provider for entitymanager named xyz
我在IntelliJ中有一個JavaFX Maven項目,該項目使用Hibernate。 應用啟動時,我收到以下錯誤消息:
沒有名為xyz的entitymanager的持久性提供程序
為什么? 我的META-INF / persistence.xml位於myproject / src / main / resources中 (在項目設置中將目錄檢查為資源文件夾)。 我確定我已經通過Maven下載了所有的Hibernate JAR。
我的persistence.xml是正確的:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="xyz">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entity.User</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLiteDialect"/>
<property name="javax.persistence.jdbc.url" value="jdbc:sqlite:java.sqlite"/>
<property name="javax.persistence.jdbc.driver_class" value="oracle.jdbc.driver"/>
<property name="hibernate.hbm2ddl.auto" value="none"/>
<property name="hibernate.show_sql" value="false"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
Java代碼:
factory = Persistence.createEntityManagerFactory("xyz");
在我的一個舊的非Maven項目中,上面的代碼運行良好。
您的persistence.xml必須位於META-INF文件夾中
我的情況有不同的背景和解決方案:
請參閱以下日志:
org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:tcp://localhost/~/test]
org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=sa}
org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
...
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named NewPersistenceUnit`
從上面的日志可以清楚地發現,找到了persistenceUnit並提取了一些數據,例如方言,用戶名和密碼。
實體映射存在問題。 通過在@Entity
逐一注釋@Entity
,我可以找到問題並解決,而無需在persistence.xml
文件中進行任何更改。
我不知道為什么當實體映射出現問題時,應該顯示諸如No Persistence provider for EntityManager named X
錯誤之類的錯誤!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.