有时获取PersistenceException:没有EntityManager的持久性提供程序

时间:2012-01-31 09:14:56

标签: java jpa netbeans persistence derby

关于这个PersistenceException存在很多问题,但我还没有看到一些问题,其中特定的代码行有时会抛出此异常(但不是随机抛出: - )。

那么,你有什么想法,为什么一旦我的简单应用程序找到提供者确定,但后来它不会?

NetBeans IDE 7.0.1,NetBeans平台应用程序,使用持久性链接库和Derby embbed。

我正在尝试this CRUD creatable capabilities "tutorial" by Geertjan,但在保存新旅行时我得到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()时都会发生这种情况。

2 个答案:

答案 0 :(得分:0)

在我看来,这个问题得到了回答: 为什么PersistenceException有时只发生的原因是,另一次,当看起来一切正常时,有问题的一行:

em = Persistence.createEntityManagerFactory("TripPU").createEntityManager();
从try ... catch块中的另一个类调用

,其中“catch”块什么都不做。所以我没有注意到它总是失败。

答案 1 :(得分:0)

还找到了真正问题的真正解决方案:如果调用Persistence.createEntityManagerFactory(“TripPU”)是正确的,那么确实在这些情况下检查persistence.xml中的持久性单元的名称(如TripPU) .createEntityManager();

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