2010-04-27 69 views
0

我想知道在休眠二級緩存如預期,如果我把一個where子句中的hbm.xml類定義的工作原理:二級緩存爲實體where子句

<hibernate-mapping> 
    <class name="com.clazzes.A" table="TABLE_A" 
    mutable="false" where="xyz=5" > 
    <cache usage="read-only"/> 
    <id name="id" /> 
    ... 

會冬眠還是把ID作爲緩存的關鍵字,還是啓用了查詢緩存?例如。當我然後執行像from A where id=2這樣的HQL查詢時,會導致類似於select * from TABLE_A where id=2 and (xyz=5)的SQL。如果我執行這個查詢兩次,它會考慮二級緩存,還是會執行兩次SQL?

回答

0

是的,你必須啓用查詢緩存。這是每個查詢設置,所以你有足夠的控制權。

+0

這意味着hibernate無法識別類的所有實例都有xyz = 5嗎? – bertolami 2010-04-28 06:37:37