JPA Eclipse链接(MySQL) - 成功写入数据库后无法检索数据

时间:2013-03-30 17:12:07

标签: java hibernate java-ee jpa eclipselink

我正在使用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会成功运行。任何帮助将不胜感激。 在此先感谢。

1 个答案:

答案 0 :(得分:1)

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