技术分享 HIBERNATE 查看内容

hibernate使用hql执行查询操作时,多出update语句

老高 | 发布于 2014-05-11 15:53| 浏览()| 评论() | 收藏() | 点赞() | 打印

摘要: hibernate发出查询语句之后,就会出现x条update语句的日志,而x的值与查询结果数据的行数一致

最近项目中使用hibernate框架发现一个奇怪的问题。

1、项目为java-web项目,hql查询代码写在业务逻辑类中,

2、看日志中,hibernate发出查询语句之后,就会出现x条update语句的日志,而x的值与查询结果数据的行数一致。

查找所有的配置文件之后,最后终于发现原因是因为底层DTO映射类中属于的Set方法中发生变化,例如正常情况应该是:

public void setComname(String comname){
    this.comname = comname;
}

但是我写成:

public void setComname(String comname){
    this.comdesc = StringUtils.rightTrim(comdesc);
}

将查询出来的comname值的右空格进行截取了,以致hibernate判断查询出来的对象发生了变化,所以会自动执行更新操作,同时查询出来如果是全表记录,则会自动执行全表的update操作,也就是很多条update语句。

如果出现这种问题首先检查是否对属性的Set方法做过修改。

发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情