Hibernate二级缓存问题

从某篇文章中看到: "二级缓存中list方式,查询过程中,key是对应的sql语句,value是对应记录的ID串,第二次执行相同的list查询的时候就可以根据ID串去class缓存中查找对应的ID对象。"

我有这么一句查询:

从库中随机返回40条记录;
List<T> result = session.createQuery("from MultipleChoice ORDER BY RAND()")
.setFirstResult(0).setMaxResults(40).list();

我的疑问是,如果启用了二级缓存是不是每次返回的value都是同样的ID串?如果是这样的话,就与我的本意违背了,不能随机取40个条记录了,每次都相同了。


第二个问题关于缓存策略read-only:
文中还提到:

“read-only:无需修改, 可以对其进行只读缓存,注意:在此策略下,如果直接修改数据库,
即使能够看到前台显示效果,但是将对象修改至cache中会报error,cache不会发生
作用。另:删除记录会报错,因为不能在read-only模式的对象从cache中删除。”

如果是这样的话只要某个表配置了只读的缓存,改表中的记录就没法做修改删除了?这样也太不科学了吧

阅读 2.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进