0

我正在将 Eclipse Link JPA 与 Tomcat 和 MySQL 一起使用。我将实体管理器的静态对象保留为

em = factory.createEntityManager();

此实体管理器在应用程序的整个生命周期中保持打开状态。我确实使用存储实体。

em.getTransaction().begin();
        em.persist(obj);
        em.flush();
        em.getTransaction().commit();

条目已成功写入 MySQL,我可以从 MySQL 控制台检查它们。问题是当我尝试使用检索条目时。em.find(MyType.class, id); 它什么都不返回,但如果我重新启动 tomcat 则 retreival 成功。任何帮助将不胜感激。提前致谢。

4

1 回答 1

1

我不确定这是否是您的问题的原因,但是将单个 EntityManager 作为 Web 应用程序中的静态变量通常不是一个好主意,因为 EntityManager 不是线程安全的。相反,您应该保留对 EntityManagerFactory 的静态引用,并为每个 HTTP 请求创建一个 EntityManager 实例(在其自己的线程中运行)。

于 2013-03-30T18:02:25.573 回答