繁体   English   中英

有时会遇到PersistenceException:EntityManager没有持久性提供程序

[英]Sometimes getting PersistenceException: No Persistence provider for EntityManager

关于此PersistenceException的问题很多,但我还没有看到一些问题,特定的代码行仅在某些时候抛出此异常(但不是随机地:-)。

那么,您有什么主意,为什么一旦我的简单应用找到了提供程序就可以了,但是后来却没有呢?

使用持久性链接库和Derby嵌入的NetBeans IDE 7.0.1,NetBeans Platform应用程序。

我正在尝试Geertjan的此CRUD可创建的功能“教程” ,但保存新的Trip 时却遇到了PersistenceException:

at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at org.mv.mm.api.TripSearchDAO.createTransactionalEntityManager(TripSearchDAO.java:61)
at org.mv.mm.api.TripSearchDAO.create(TripSearchDAO.java:41)
at org.mv.mm.api.TripQuery$3.create(TripQuery.java:69)
[catch] at org.mv.mm.api.TripType.create(TripType.java:64)

但是在DAO类的“搜索”方法中,也调用了这个私有方法createTransactionalEntityManager并正确创建了EntityManager。 为什么会这样呢?


好的,这个问题和这里的许多其他问题类似(嗯,我还没有解决,但是明天我会再试)。 每次都会失败。 我忽略了try catch块,因此没有注意到异常。 每次调用Persistence.createEntityManagerFactory(“ TripPU”)。createEntityManager()时都会发生。

在我看来,这个问题得到了解答:之所以仅在某些情况下发生PersistenceException的原因是,在另一时间,看来一切正常,这是有问题的行:

em = Persistence.createEntityManagerFactory("TripPU").createEntityManager();

是从try ... catch块的另一个类中调用的,其中“ catch”块什么都不做。 因此,我没有注意到它总是会失败。

并且找到了解决实际问题的真正方法:在那些情况下,请确实在persistence.xml中检查持久性单元的名称(例如TripPU),是否与调用Persistence.createEntityManagerFactory(“ TripPU”)。createEntityManager( );

PU与数据库实体不同,因此当您尝试做一些不同的示例(不同的表等)时,这些教程可能会使您感到困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM