Hibernate更新多个对象列表

时间:2015-10-28 17:30:24

标签: java hibernate

我有不同类型的对象要更新。所有对象都设置为列表并将它们传递给方法。

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更新样本。但是所有这些都显示,在会话中加载一个对象,设置新值并简单地更新。在我的场景中,对象被加载到会话之外,并且它们都是不同类型的对象。请帮忙。

2 个答案:

答案 0 :(得分:2)

要更新内容,您还可以使用合并方法。 Maibe它可以帮到你吗?

尝试使用实体管理器获取对象。然后修改属性。并保存更改例如:   MediaInfo tmp = em.find(MediaInfo.class, mediaInfo.getId(); //Modify some properties tmp.setMachin(....); list.add(tmp); updateList ( list );

答案 1 :(得分:0)

需要确保您的映射位置为&#39;是按照你的期望,即它应该是暂时的,可更新的应该是假的