我有不同類型的對象要更新。所有對象都設置爲一個列表並將它們傳遞給一個方法。休眠更新多個對象列表
List list = new ArrayList();
list.add(mediaInfo); // Class MediaInfo
list.add(mediaMode); // Class MediaMode
list.add(paidCustomer); // Class paidCustomer
updateList (l);
以上所有對象都已加載,而且我更改了一個字段(稱爲「位置」:字符串值)。在任何對象上方也不會附加到任何hb會話。這些對象被加載到另一個地方。我只想用更新的數據更新它們。
public boolean updateList(java.util.List <Object> dataList){
Session session = null;
Hbutility myHbutil = null;
try {
myHbutil = new Hbutility();
session = myHbutil.getSession();
Transaction tx = session.beginTransaction();
for(Object entity: dataList){
logger.info("Updating Objects : " + entity);
session.update(entity);
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return updateStaus;
}
所有對象都有自己的ID。但他們沒有更新。任何人在這裏看到任何問題?
谷歌有很多hibernate更新樣本。但是他們都展示了,在會話中加載一個對象,設置新的值並且簡單地更新。在我的場景中,對象從會話中加載出來,它們都是不同類型的對象。請任何幫助。
感謝。我想更新列,但不想保存。 –
更新合併是兩種方法來堅持現有的內容。 Maibe你可以試試session.merge(entity); – Klemm
當我嘗試合併時,有一個exceptin,org.hibernate.TransientObjectException:對象引用一個未保存的瞬態實例 - 保存沖洗前的瞬態實例:com.media.entity.MediaInfo。 –