我有不同类型的对象要更新。所有对象都设置为列表并将它们传递给方法。
List list = new ArrayList();
list.add(mediaInfo); // Class MediaInfo
list.add(mediaMode); // Class MediaMode
list.add(paidCustomer); // Class paidCustomer
updateList ( l );
之前所有上面的对象都已加载,我更改了一个字段(称为“position”:String value)。任何对象上面都没有附加到任何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更新样本。但是所有这些都显示,在会话中加载一个对象,设置新值并简单地更新。在我的场景中,对象被加载到会话之外,并且它们都是不同类型的对象。请帮忙。
答案 0 :(得分:2)
要更新内容,您还可以使用合并方法。 Maibe它可以帮到你吗?
尝试使用实体管理器获取对象。然后修改属性。并保存更改例如:
MediaInfo tmp = em.find(MediaInfo.class, mediaInfo.getId();
//Modify some properties
tmp.setMachin(....);
list.add(tmp);
updateList ( list );
答案 1 :(得分:0)
需要确保您的映射位置为&#39;是按照你的期望,即它应该是暂时的,可更新的应该是假的