歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Hibernate執行查詢後又立馬執行了更新(default-access)

Hibernate執行查詢後又立馬執行了更新(default-access)

日期:2017/3/1 9:59:44   编辑:Linux編程

在項目中遇到利用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接口的類的具體策略來訪問字段屬性。

Copyright © Linux教程網 All Rights Reserved