日期:2014-05-18  浏览次数:20688 次

关于HIBERNATE删除后查询出现了脏读的问题
我在用HIBERNATE对实体对象进行删除后:
如:
addao.makeTransient(ad);(这个类我封装了,用MYSQL查询表已经确认删除无误)
但在次进行对表的查询发现原来已经删除的纪录又出现了:
如:
query   =   session.getNamedQuery(namedquery);
遍历纪录集后被删除的纪录又出现了!

初步估计是于HIBERNATE的缓存有关系,好像是从session中调出数据时并没有从数据库里进行调用,   **因为我在删除操作之前已经进行了一次查询操作**  

麻烦大虾们帮我解决一下这个问题,这样的情况下该如何避免出现脏读?

------解决方案--------------------
在查询前加上
getSession().clear();
就可以了。

这个问题在开始使用 hibernate 的时候最常见了。