我正在使用hibernate来运行命名的JPA查询。为什么hibernate会从同一个会话的同一个查询中返回不同的对象?
该查询从同一会话执行两次,查询应返回相同的行,因为数据库在此期间不会更改。
令我惊讶的是,查询返回的对象与这两个查询结果列表(数据相同但对象不同)不同。启用第一级缓存(默认情况下)后,我认为第二个查询应该返回与第一个查询相同的对象?
查询是一个简单的命名查询:
SELECT e from TABLE e where e.name=?1
是缓存随查询莫名其妙地绕过?或者我对第一级缓存的理解是错误的?
您可以添加您用于查询的代码吗?你的对象是否有实体键? – 2013-04-07 23:35:06