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