二级缓存为实体where子句

问题描述:

我想知道在休眠二级缓存如预期,如果我把一个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

这意味着hibernate无法识别类的所有实例都有xyz = 5吗? – bertolami 2010-04-28 06:37:37