没有命名 EntityManager 的持久性提供程序
Posted
技术标签:
【中文标题】没有命名 EntityManager 的持久性提供程序【英文标题】:No Persistence provider for EntityManager named 【发布时间】:2010-11-12 14:10:19 【问题描述】:我的persistence.xml
在META-INF
目录下使用TopLink
同名。
然后,我的代码调用它:
EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");
但是,我收到以下错误消息:
2009-07-21 09:22:41,018 [main] 错误 - 没有名为 agisdb 的 EntityManager 的持久性提供程序 javax.persistence.PersistenceException:没有名为 agisdb 的 EntityManager 的持久性提供程序 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89) 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)这里是persistence.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="agisdb">
<class>com.agis.livedb.domain.AddressEntity</class>
<class>com.agis.livedb.domain.TrafficCameraEntity</class>
<class>com.agis.livedb.domain.TrafficPhotoEntity</class>
<class>com.agis.livedb.domain.TrafficReportEntity</class>
<properties>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="password"/>
</properties>
</persistence-unit>
</persistence>
它应该在类路径中。然而,我得到了上述错误。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我从我现在工作的 bean 类中删除了“@ManagedBean”。
【讨论】:
【参考方案2】:当我将所有 java 类移动到不同的包时遇到了这个问题。 最后,我发现如果我更改了 myclasses 的包,那么我需要使用所有引用我的 java 类的持久性单元/类元素中的新包来更新 persistence.xml。
【讨论】:
以上是关于没有命名 EntityManager 的持久性提供程序的主要内容,如果未能解决你的问题,请参考以下文章
没有名为 X 的 EntityManager 的持久性提供程序
JPA-MSAccess DB 的 EntityManager 没有持久性提供程序
JPA 2.0 使用 Hibernate 作为提供者 - 例外:EntityManager 没有持久性提供者
JPA 和 Play 框架:EntityManager 没有名为更新的持久性提供程序
如何使用休眠将mysql与Java连接?例外:没有名为 org.hibernate.tutorial_jpa 的 EntityManager 的持久性提供程序 [关闭]