#694·guice

JpaPersistService.end() 在 finally 块中没有调用 entityManager.remove()

作者: gissuebot创建于 2014年7月7日更新于 2026年5月21日
标签enhancementimportedComponent-Persist

来自 hristo.sabev 于 2012 年 3 月 20 日 13:53:45

这是从源代码中复制的 JpaPersistService.end() 方法:

public void end() {     EntityManager em = entityManager.get();

    // 我们不应该惩罚用户多次调用 end() 方法。     if (null == em) {       return;     }

    em.close();     entityManager.remove();  }

调用 em.close() 有时会失败。在我特定的情况下,它失败了,因为我尝试保存一个具有 500 字节以上的 byte[] 字段的对象。这导致最后一行被跳过。实际上,此线程再也不能用来处理请求,因为 JpaPersistService 的 begin() 方法总是会失败。