如何强制hibernate从数据库加载数据?

时间:2011-08-09 14:23:29

标签: hibernate native

休眠问题:

我在源代码中使用本机查询更新表“data”中的列“count”。后来我想从表“data”加载所有行,但列“count”的值没有改变。

表“data”中的行加载:

... .createQuery(“来自数据”) .setCacheable(假)
.LIST();

知道什么是错的吗?

1 个答案:

答案 0 :(得分:6)

setCacheable(false)没用(这是默认设置)。它引用的缓存是二级缓存。在执行更新查询之前,您可能已在会话中加载了一些实体(即第一级缓存)。在这种情况下,select查询将针对数据库执行,但将从会话中返回已加载的实体。因此,您需要在执行选择查询之前evict会话中的这些实体,或者完全clear会话。

如果实体缓存在二级缓存中,那么您还必须从二级缓存中逐出它们。请参阅getCache