簡體   English   中英

沒有名為xyz的entitymanager的持久性提供程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM