Hibernate 更新多个对象列表
Hibernate update multiple Objects List
我有不同类型的对象要更新。所有对象都设置为一个列表并将它们传递给一个方法。
List list = new ArrayList();
list.add(mediaInfo); // Class MediaInfo
list.add(mediaMode); // Class MediaMode
list.add(paidCustomer); // Class paidCustomer
updateList ( l );
以上所有对象之前都已加载,我更改了一个字段(称为 "position":字符串值)。同样在上面的任何对象都没有附加到任何 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 。但是它们没有更新。有人看到这里有什么问题吗?
google 中有很多 hibernate 更新的示例。但是所有这些都显示,在会话中加载一个对象,设置新值并简单地更新。在我的场景中,对象从会话中加载出来,它们都是不同类型的对象。请帮忙。
要更新内容,也可以使用merge方法。也许它可以帮助你?
尝试通过实体管理器获取对象。然后修改属性。并保存更改示例:
MediaInfo tmp = em.find(MediaInfo.class, mediaInfo.getId();
//Modify some properties
tmp.setMachin(....);
list.add(tmp);
updateList ( list );
需要确保 'position' 的映射符合您的预期,即它不应该是瞬态的并且可更新的不应该是 false
我有不同类型的对象要更新。所有对象都设置为一个列表并将它们传递给一个方法。
List list = new ArrayList();
list.add(mediaInfo); // Class MediaInfo
list.add(mediaMode); // Class MediaMode
list.add(paidCustomer); // Class paidCustomer
updateList ( l );
以上所有对象之前都已加载,我更改了一个字段(称为 "position":字符串值)。同样在上面的任何对象都没有附加到任何 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 。但是它们没有更新。有人看到这里有什么问题吗?
google 中有很多 hibernate 更新的示例。但是所有这些都显示,在会话中加载一个对象,设置新值并简单地更新。在我的场景中,对象从会话中加载出来,它们都是不同类型的对象。请帮忙。
要更新内容,也可以使用merge方法。也许它可以帮助你?
尝试通过实体管理器获取对象。然后修改属性。并保存更改示例:
MediaInfo tmp = em.find(MediaInfo.class, mediaInfo.getId();
//Modify some properties
tmp.setMachin(....);
list.add(tmp);
updateList ( list );
需要确保 'position' 的映射符合您的预期,即它不应该是瞬态的并且可更新的不应该是 false