java - 执行 native 更新查询后,检索到的实体中仍然存在旧值

标签 java jpa entity eclipselink nativequery

我正在使用 native 查询来更新用 @ElementCollection 注释的 HashMap 中某个键的值。

执行查询后,将使用 EntityManager.find(...) 检索包含 HashMap 的完整实体。 问题是,检索到的实体中的 HashMap 仍然包含旧值。

如何获取更新后的 HashMap 的实体?是否需要刷新缓存?我正在使用 Eclipse Link。

最佳答案

我假设您已启用缓存(默认)。所以你需要调用refresh()来刷新对象。

否则,您可以禁用共享缓存,但如果您在 EntityManager 的上下文中执行此操作,则仍然需要刷新或清除持久性上下文才能看到更改。

看, http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching#How_to_refresh_the_cache

关于java - 执行 native 更新查询后,检索到的实体中仍然存在旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798030/

相关文章:

java - 如何才能完全禁用Spring Boot数据库相关配置

java - 在 Spring Data JPA 存储库中使用 EntityGraph 进行过滤

java - 如何更改 Jetty 请求日志 *文件名* 的时区?

java - 通过 UDP 发送对象的多个实例

java - 在 Google App Engine 中配置数据库

c# - 在 View 中创建 HiddenFor IEnumerable<String>

c# - 在 EF 上具有默认筛选器的实体

hibernate - 实体类和持久类有什么区别?

java - 使运算的输出显示 2 位小数

java - 将部门层次结构打印到表中