任何人都可以幫我解決這個問題。我將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