【问题标题】:Java JPA - Sync Database and EntityJava JPA - 同步数据库和实体
【发布时间】:2012-01-28 11:15:59
【问题描述】:

我将 JPA 用于我的企业应用程序,当我将行的值更改到我的数据库表中时,相关实体(通过 find(-) 获取)没有更新为新值。

我觉得实体和数据库的同步或者简单的缓存有问题,请问如何解决?

【问题讨论】:

  • 数据库中的值是否发生了变化?您应该详细说明问题 - 举例说明您在做什么。
  • 值已手动更改并直接进入数据库。当我从 JPA 类中执行 find 时,我得到了旧数据。

标签: java database jpa entity


【解决方案1】:

如果您不使用 JPA 编辑数据库行,则应使用 find(-) 获取的实体作为参数调用 EntityManager#refresh(-),或调用 EntityManager#clear(-) 然后再次调用 find(-)

【讨论】:

  • 我已经尝试过并且工作正常,但是有一种方法可以避免为每个查询调用“刷新”?
  • 好吧,没有任何简单的解决方案。您正在 JPA 上下文之外更新数据库,因此 JPA 不知道所做的更改 - 这很糟糕。如果没有缓存,您将在每个请求中访问数据库。在这里您可以找到有关L1 cache 的更多信息。您不妨阅读您的 JPA 提供程序文档,看看它是否没有定义任何用于禁用 L1 缓存的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多