gpt4 book ai didi

java - Spring Roo JPA - 为什么手动数据库更新在持久性上下文中自动可用?

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:37 24 4
gpt4 key购买 nike

我使用 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()
  • 对象在持久上下文中不可用(--> 改为查询数据库)

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

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

非常感谢

NaP

最佳答案

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

关于java - Spring Roo JPA - 为什么手动数据库更新在持久性上下文中自动可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266094/

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