使用Session.merge()函数获取在hibernate中合并两个对象的问题

时间:2015-04-14 12:37:47

标签: java hibernate merge

我正在尝试使用hibernate更新数据库中的单个记录,所以我想合并更新的对象。我有代码更新对象并返回合并的hibernate实体对象,如

  protected <T> T updateObject(T o) {
        Session s = getSession();
        @SuppressWarnings("unchecked")
        T mergedObject = (T) s.merge(o);
        s.update(mergedObject);
        return mergedObject;
    }

当我尝试更新多值属性(例如地址列表)时,如果我在列表中添加新地址并调用更新功能,

T mergedObject =(T)s.merge(o); 之后,包含空值和事务的mergedObject失败。 我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

如果您的对象是列表,那么您需要迭代列表并单独合并特定实体。虽然你不能只使用String。该对象必须是一个休眠实体。使用hibernate实体,你可以这样做。

    T mergedObject = null;
    if(o instanceof List){
        for(Object obj: o){
              mergedObject = (T) s.merge(obj);
        }
    }else{
        mergedObject = (T) s.merge(o);
    }