日期:2014-05-19  浏览次数:20734 次

SSH两次查询同一记录…内存地址不一样…?
User u1 = super.getHibernateTemplate().get(User.class, 1L);

User u2 = super.getHibernateTemplate().get(User.class, 1L);

System.out.println(u1);

System.out.println(u2);

System.out.println(u1==u2);

控制台输出:

@ae42d3

@5cb56d

false

问题是:如果单纯用Hibernate内存地址是一样的…SSH整合以后就不行了…

------解决方案--------------------
重新 写下 User hashcode and equals 就可以了和框架没有关系
------解决方案--------------------
get方法每次都发sql 你用load 这样去读hibernate的一级缓存 打印肯定是一样的 当然你得在一个session中操作
------解决方案--------------------
User重写equals hashCode
------解决方案--------------------
有一种东西叫做opensessioninview 你都配置了2级缓存了 原因就是你用的是get这个方法