gpt4 book ai didi

java - 是否有针对 "clean"错误(JPA)的 "Object Manager has been closed"解决方案?

转载 作者:行者123 更新时间:2023-12-02 00:31:38 26 4
gpt4 key购买 nike

我在 Google App Engine 上使用 JPA(不是 JDO),这是我的服务方法的典型示例:

@Autowired
EntityManagerFactory entityManagerFactory;

public Collection<Message> getAll() {
EntityManager em = entityManagerFactory.createEntityManager();
Collection<Message> result = null;

try {
Query query = em.createQuery("SELECT e FROM Message e");
result = query.getResultList();
//The workaround
//if(result != null) result.size();
} finally {
em.close();
}

return result;
}

当我尝试在方法之外使用集合时,我收到“著名”错误报告,表明对象管理器已关闭。调用 size() 方法是一种解决方法,但我不喜欢这种“肮脏”的解决方案。我想知道没有任何方法可以分离这个集合或禁用延迟加载。

最佳答案

我不知道它是否“干净”,但经常推荐的方法是使用一个 servlet 过滤器,在代码运行之前创建一个线程本地 EntityManager,并在最后关闭它。

关于java - 是否有针对 "clean"错误(JPA)的 "Object Manager has been closed"解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com