hibernate update 只更新部分欄位的3種方法(轉載)
hibernate 中如果直接使用
Session.update(Object o);
會把這個表中的所有欄位更新一遍。
比如:
public class Teacher Test { @Test public void update(){ Session session = HibernateUitl.getSessionFactory().getCurrentSession(); session.beginTransaction(); Teacher t = (Teacher) session.get(Teacher.class,3); t.setName("yangtb2"); session.update(t); session.getTransaction().commit(); } }
Hibernate 執行的SQL語句:
程式碼
Hibernate: UPDATE Teacher SET age=?, birthday=?, name=?, title=? WHERE id=?
我們只更改了Name屬性,而Hibernate 的sql語句 把所有欄位都更改了一次。
這樣要是我們有欄位是文字型別,這個型別儲存的內容是幾千,幾萬字,這樣效率會很低。
那麼怎麼只更改我們更新的欄位呢?
有三種方法:
1.XML中設定property 標籤 update = “false” ,如下:我們設定 age 這個屬性在更改中不做更改
在Annotation中 在屬性GET方法上加上@Column(updatable=false)
@Column(updatable=false)
public int getAge() {
return age;
}
我們在執行 Update方法會發現,age 屬性 不會被更改
Hibernate:
UPDATE
Teacher
SET
birthday=?,
name=?,
title=?
WHERE
id=?
缺點:不靈活····
2.第2種方法··使用XML中的 dynamic-update="true"
<classname="com.sccin.entity.Student"table="student"dynamic-update="true"/>
OK,這樣就不需要在欄位上設定了。
但這樣的方法在Annotation中沒有
3.第三種方式:使用HQL語句(靈活,方便)
使用HQL語句修改資料
public void update(){
Session session = HibernateUitl.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("update Teacher t set t.name = 'yangtianb' where id = 3");
query.executeUpdate();
session.getTransaction().commit();
}
Hibernate 執行的SQL語句:
Hibernate:
update
Teacher
set
name='yangtianb'
where
id=3
這樣就只更新了我們更新的欄位·····
相關推薦
hibernate update 只更新部分欄位的3種方法(轉載)
hibernate 中如果直接使用 Session.update(Object o); 會把這個表中的所有欄位更新一遍。 比如: public class Teacher Test { @Test public void update(){ Session session
hibernate update 只更新部分欄位的3種方法
Hibernate 中如果直接使用 Session.update(Object o); 會把這個表中的所有欄位更新一遍。 比如: public class TeacherTest { @Test public void update(){
使用hibernate執行原生update更新資料(只更新部分欄位)
事務根據實際情況進行新增,這裡不特殊說明 1、使用update執行更新部分欄位 String sql = " update A set a.grade= :grade,a.gradeType =
hibernate中的update方法只更新部分欄位的方法
Hibernate 中如果直接使用 Session.update(Object o); 會把這個表中的所有欄位更新一遍。 比如: ? 1 2 3 4 5 6 7 8 9 10 11 12 public class Teacher
hibernate update 只更新部分字段的3種方法(其實我只想說第二種)
day query per 分享 cci bar .exe toc 技術分享 hibernate 中如果直接使用Session.update(Object o);會把這個表中的所有字段更新一遍。 比如: public class Teacher Test {
Hibernate update 只更新被修改欄位
2012-11-21 11:16:48| 分類: 預設分類 | 標籤: |字號訂閱 Hibernate 中如果直接使用 Session.update(Object o); 會把這個表中的所有欄位更新一遍。 如果我們只更改了state屬性,而Hib
Hibernate——update-只更新被修改的欄位
方法一:(不好,因為不靈活) 使用註解: 在不希望被更新的欄位對應的屬性的getXXX()方法上註解:@Column(updatable=false) 使用XML:
Hibernate——僅更新部分欄位
介紹兩種方法 1.Annotation設定@Column(updatable=false) 在不需要更新的屬性上新增這個註解。這種方法不靈活,很少使用。 2.使用HQL @Test public
Qt中SQL語句update同時更新多欄位及設定欄位值為空的方法
Qt中往往需要對資料庫進行操作,常出現根據某變數更改相關欄位的內容。一般地,可以採用名稱繫結和位置繫結兩種方法。 本文以update舉例,其他insert等語句操作類似。 方法一:名稱繫結 已知:定義Qstring型別變數a b c d e f g h。
關於mybatis多表查詢只查詢部分欄位,而丟失一整條資料問題
今天在寫一個list資料按某欄位排序問題時遇到了一個問題,就是有很多個數據這個欄位一樣時,只會查出來一個。 如下 頁面,5條資料只查出來3條資料 基礎資訊和接單什麼資訊的分成了2個表,根據接單數排名 select e.engineer_name,
解決問題:Spring Date JPA 更新部分欄位
在Spring Data JPA 中,新增和更新操作都是用save()的方式進行,JPA是通過什麼方法來知道我們是要進行insert還是update呢? 經過測試,JPA對程式呼叫的save()方法判斷是updata或者insert操作的依據是看實體物件的主鍵是否被賦值。
Hibernate中用hql查詢部分欄位
在hibernate中,用hql語句查詢實體類,採用list方法的返回結果為一個List,該List中封裝的物件分為以下三種情況: 1.查詢全部欄位的情況下,如"from 實體類",list中封裝的物件為實體類本身,各屬性都將得到填充。 2.只查詢一個欄位,預設情況下
Hibernate中用hql查詢部分欄位 可解決異常java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to
hql查詢單表部分欄位: 在hibernate中,用hql語句查詢實體類,採用list方法的返回結果為一個List,該List中封裝的物件分為以下三種情況: 1.查詢全部欄位的情況下,如"from 實體類",list中封裝的物件為實體類本身,各屬性都將得到填充。 2.只查詢一個欄位,預設情況下,list中封
使用hibernateTemplate模板執行只更新一個欄位的操作
之前做課程設計一直都用這hibernateTemplate模板,感覺的確很省程式碼,但是突然做到一個功能只更新一個欄位。頓時有點懵逼,啥東西都試了,就是不行。百度了一下發現了一個方法,在這裡分享一下。 思路是這樣子的:先根據一個id去查詢全部資訊,然後在set單個欄位進去直
關於更新部分屬性,Hibernate更新某些欄位的幾種update方法
1.在hbm.xml中設定property 標籤 update = “false” 例如 <property name=”age”update=”false”></property> 我們在執行 Update方法會發現,age 屬
Hibernate插入資料時取欄位的預設值,更新時只更新修改過的屬性值
使用Hibernate向資料庫插入或更新資料的時候 ,如果想要取到資料庫欄位的預設值,可以在類的Hibernate對映檔案的Class標籤中加上dynamic-insert和dynamic-update。如果資料庫欄位是可以為空且有預設值 的情況下,只要在
Hibernate更新某些欄位的幾種update方法
Hibernate 中如果直接使用 Session.update(Object o); 會把這個表中的所有欄位更新一遍。 比如: view plaincopy to clipboardprint? public class TeacherTest { @Test
EF部分欄位更新,自動忽略null欄位
原文: EF部分欄位更新,自動忽略null欄位 某個專案裡的update程式碼是類似這樣的 public T Update<T>(T entity) where T : ModelBase { var set = t
Thinkphp3.2.3 只修改一個欄位的值
$result = M('Hd')->where("hd_id = '$hd_id'")->setField('hd_like', ‘測試的值’); 成功後,返回值可能為0,所以判斷要用以下方式 if($result !== false){ echo '資料更
hibernate查詢資料庫char型別欄位時只返回一個字元
hibernate查詢資料表char型別欄位只返回一個字元 在oracle或sqlServer下會遇到,查詢資料表字段型別為char,如果使用Hibernate原生SQL去執行查詢,往往只會返回 一