Hibernate entity属性修改导致对象的记录被修改

来源:互联网 发布:lolita洋装好的淘宝店 编辑:程序博客网 时间:2024/06/05 06:11

当通过hibernate获取到entity后 然后在get属性时修改了属性的值后 然后根据id从新到数据库中查询该实体 这是对应的表中该记录也被修改 如果没重新查询修改不修改还不好说

log分析 当修改实体后在次查询执行了三次hibernate语句 首先执行查询语句 接着执行修改语句 访问实体时又执行了次查询语句

原因分析 当通过herbernate查询出entity后 将被缓存在session中 当修改了entity的值后 在第二次查询时一看缓存的值有修改 将把entity里修改的值放到entity里


除了导致查询时会执行修改操作以外 有可能还会出现更具id查询奔溃现象

奔溃场景:当使用dao更具id查询出来后修改了了entity的属性 接着使用dao查询同张表的不同id的记录时出现崩溃


出问题的Entity代码

public String getThumb() {        if(TextUtils.isBlank(thumb)){            thumb= "heihei.jpg";        }else{            thumb=thumb+".jpg");        }        return thumb;}

解决方案

1.在查询的地方开启的事物为read_oliny

2.getThumb方法里不要修改thumb的值(推荐)

public String getThumb() {        String result;        if(TextUtils.isBlank(thumb)){            result= "heihei.jpg";        }else{            result=thumb+".jpg");        }        return result;}



其他资料

0 0
原创粉丝点击