hibernate 问题:
我在源代码中使用 native 查询更新表“数据”中的“计数”列。后来我想从表“数据”加载所有行,但列“计数”的值没有改变。
“数据”表中的行加载了:
...
.createQuery("来自数据")
.setCacheable(假)
.list();
知道哪里出了问题吗?
最佳答案
setCacheable(false)
没有用(这是默认设置)。它所指的缓存就是二级缓存。在执行更新查询之前,您可能已经在 session 中加载了一些实体(即一级缓存)。在这种情况下,选择查询将针对数据库执行,但将从 session 中返回已加载的实体。因此你需要 evict这些实体在执行选择查询之前来自 session ,或者完全clear session 。
如果实体缓存在二级缓存中,那么您还必须将它们从二级缓存中逐出。参见 getCache .
关于hibernate - 如何强制 hibernate 从数据库加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6997702/