1

我使用 Spring Roo (Spring MVC 3)、JPA 1、Hibernate、JSTL、JQUERY 等开发了一个 Web 应用程序。持久性上下文是通过 JPA 事务管理器管理的应用程序。使用的数据库是 MSSQL2005。该应用程序在 JBOSS 5 上运行。

一切正常。我的问题一直在我脑海中,但我还没有找到合适的答案。

假设如下:

  1. 我使用 entitymanager.find() 从表 T 中检索一些行,并将数据呈现到页面
  2. 我手动更改了行中的一个字段值(通过 SQL 和 gui 工具)。
  3. 我立即重复步骤 (1),并且手动更新的值可用。

它是否正确?我的理解是持久性上下文中的值不会得到更新,除非:

  • 调用 em.refesh()
  • 对象在 PERSISTENCE CONTEXT 中不可用(--> 改为查询数据库)

我的经验似乎与下面的链接相矛盾,这对我来说实际上是合乎逻辑的。

更新的数据(在数据库中)通过 JPA/Eclipselink 不可见

非常感谢

小憩

4

1 回答 1

1

这是正确的行为。除非您在 SESSION 中调用 em.refresh(),否则不会更新持久性上下文中的值。当您再次检索网页时,旧会话将关闭并打开一个新会话并反映新数据。

于 2012-09-05T06:53:23.177 回答