日期:2014-05-17  浏览次数:20787 次

关于hibernate二级缓存问题
二级缓存只能对通过ID查询的语句起作用?
只对这样的语句 hql="from ShopBean as shop where shop.s_id =123"; 起作用?
我底下的语句不行?怎么才能让下面的语句也使用二级缓存?

Java code

List<ShopBean> shops;
String hql="from ShopBean as shop where shop.s_level like '%"+level+"' and shop.s_check='"+check+"'";
Query query=session.createQuery(hql);
shops=query.list();
return shops;



------解决方案--------------------
不是太了解 帮顶
------解决方案--------------------
hibernate 应该只对 通过主键加载的数据起作用,还有延迟加载的数据,你这样的估计是不行。

你这种模糊查询为什么需要缓存呢?你要明白缓存的应用场景,并不是什么场景都适用缓存的。

变化频繁的数据并不适合做缓存的
------解决方案--------------------
需要在hibernate配置文件中加入<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache">true</property>
然后在查询的地方加入query.setCacheable(true)