任何人都可以帮我解决这个问题。我将Infinispan用作二级缓存,将Hibernate用作ORM。我打开了enityt和查询缓存。查询缓存休眠加载实体
我有两个查询,例如Q1是 “从BokkEntity selet B B其中b.id < 5” 和其它类似的Q2是
第一次 “从BokkEntity b其中b.id < 7选择B” 我我正在运行Q1,它将5个对象从持久存储加载到缓存中。第一次运行第二次查询会在Cache中加载7个对象。虽然前两个对象在两个查询中都很常见。并根据我的理解查询缓存总是只存储id,然后如果实体缓存在搜索上完成缓存内的查询缓存中的对象,由ID引用。
所以我的问题是,为什么这两个Q2再次加载所有的对象和 覆盖这些在实体缓存,而我跑Q2(Q1运行后) 第一次。
我检查过的查询缓存对任何后续请求都正常工作。即,如果我重新运行Q1或Q2,则会从缓存中访问数据。
这是紧急的,我会感激努力。
感谢
米娜
此外,这似乎是一个关于使用查询缓存的陷阱的好文章:http://tech.puredanger.com/2009/07/10/hibernate-query-cache/引用文章:“主要原因查询缓存通常没有用处,因为表格修改会导致结果不断失效。“ – 2013-06-01 05:01:56