环境:
OS : Win XP SP2
Hibernate: 3.5.1
伪代码: [code="java"]
System.out.println(StringUtils.center("query 查询: " ));
Session session = HibernateSessionFactory.getSession();
String hql = "FROM Room T WHERE T.address = ?";
Query query = session.createQuery(hql).setParameter(0, "Shanghai");
query.setCacheable(true);
Room room = (Room) query.list().get(0);
HibernateSessionFactory.closeSession();
System.out.println(StringUtils.center("更新: " ));
Session session2 = HibernateSessionFactory.getSession();
Transaction tx = session2.beginTransaction();
room.setSize(60);
session2.update(room);
tx.commit();
HibernateSessionFactory.closeSession();
System.out.println(StringUtils.center("load查询(已同步缓存): " ));
Session session3 = HibernateSessionFactory.getSession();
room = (Room) session3.load(Room.class, new Long(2));
Hibernate.initialize(room);
HibernateSessionFactory.closeSession();
System.out.println(room.getSize());
System.out.println(StringUtils.center("query 查询(未同步缓存): "));
Session session4 = HibernateSessionFactory.getSession();
query = session4.createQuery(hql).setParameter(0, "Shanghai");
query.setCacheable(true);
room = (Room) query.list().get(0);
HibernateSessionFactory.closeSession();
[/code]
[size=xx-large]hibernate.cache.use_query_cache 和 和 setCacheable(true) 都已配置过
疑问: 两次查询条件都一样, 中间修改了实体, 为什么第二次query查询还是发送了sql, 如果同步了缓存应该不会发送, 请指教. 谢谢.[/size]