【发布时间】:2015-01-28 16:16:19
【问题描述】:
我从数据库中删除了一条记录,而实体管理器仍然引用了该删除的记录。
我有以下疑问:
List results = em.createNamedQuery("Customers.findNew")
.setParameter("status", "n")
.getResultList();
我正在返回包含已删除记录的结果。我已经阅读了实体管理器caches the database 以获得更好的性能。如果只有使用实体管理器的应用程序正在访问数据库,这很好。但是当多个系统访问同一个数据库时会发生什么呢?
我试过了:
1. em.flush()
2. em.refresh()
3. em.clear()
就在我使用实体管理器查询数据库,尝试强制重新同步之前,但他们都没有这样做。我仍然得到数据库中不再存在的相同记录。
更新
我用来删除记录的程序 Oracle SQL Developer 没有提交更改。所以 JPA 工作正常,这是我用来更改数据库的程序没有提交更改。如果您遇到类似问题,请确保 db 管理程序已提交更改。
【问题讨论】:
-
可能从 L1 和 L2 缓存中驱逐所有内容
标签: java jpa entitymanager