【发布时间】:2016-08-03 11:20:14
【问题描述】:
我在 IntelliJ 中有一个 JavaFX Maven 项目,它使用 Hibernate。当应用程序启动时,我收到以下错误消息:
没有名为 xyz 的实体管理器的持久性提供程序
为什么?我的 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 中重命名 WEB-INF 就可以了
-
这是我写问题时的错误。该文件夹名为 META-INF 而不是 WEB-INF。
-
如果您使用的是 Hibernate 5.2,请尝试
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> -
Ejb.hibernatepersistence 已弃用