【问题标题】:Spring Roo JPA - Why are manual DB updates automatically available in Persistence Context?Spring Roo JPA - 为什么在持久性上下文中自动提供手动数据库更新?
【发布时间】:2012-09-04 14:51:53
【问题描述】:

我使用 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 中不可用(--> 改为查询 DB)

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

Updated data (in Database) is not visible via JPA/Eclipselink

非常感谢

午睡

【问题讨论】:

    标签: java hibernate sql-server-2005 jpa spring-roo


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 2015-11-22
      • 2013-04-01
      • 1970-01-01
      • 2021-11-18
      相关资源
      最近更新 更多