欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

hibernate实施查询后又立马执行了更新(default-access)

更新时间: 2014-01-05 02:24:56 责任编辑: Author_N1

 

Hibernate执行查询后又立马执行了更新(default-access)

在项目中遇到利用hibernate执行查询后立马又对数据库数据进行了更新,导致了错误。

public String getName() 
{   
    if(this.name==null)
    {   
        this.name="";   
    }   
    return this.name;   
}  

因为在数据库中是null,在hibernate查询时会设置成“”。hibernate会任务session中的实体发生了改变,就会执行update。

 

解决方式: 

 采用的解决办法是将配置文件增加一个属性access="field" 这样就不会通过get方法比较属性而直接访问属性字段
<property name="name" type="java.lang.String" access="field">
  <column name="name" length="20" />
 </property>

 

default-access="field ¦property ¦ClassName"  

这里field表示Hibernate直接读取类中的字段值。
这种方式如果你在业务中不需要getter和setter的话,就可以不用写了。 这时,可以设置属性为不可变,可以不用执行脏检查。

property(默认)表示Hibernate通过getter和setter读取。
这种方式可以在getter和setter中做额外的处理。

ClassName,是指使用实现了org.hibernate.property.PropertyAccessor接口的类的具体策略来访问字段属性。

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:24:56
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9499/
本文WWW.DOC100.NET DOC100.NET版权所有。