hibernate的问题:
我用源代码中的原生查询更新表"data“中的"count”列。稍后,我想从表"data“加载所有行,但是列"count”的值没有改变。
表"data“中的行用以下命令加载:
... .createQuery("from data") .setCacheable(false)
.list();
知道出什么问题了吗?
发布于 2011-08-09 22:34:31
setCacheable(false)没有用处(这是默认设置)。它引用的缓存是二级缓存。在执行更新查询之前,您可能已经在会话中加载了一些实体(即一级缓存)。在这种情况下,select查询将针对数据库执行,但将从会话中返回已加载的实体。因此,您需要在执行select查询之前从会话中evict这些实体,或者完全clear会话。
setCacheable(false)
如果实体被缓存在二级缓存中,那么您还必须将它们从二级缓存中逐出。参见getCache。
https://stackoverflow.com/questions/6997702
相似问题