我正在尝试使用休眠更新数据库中的单个记录,因此我想合并更新的对象。我有代码来更新对象并返回合并的休眠实体对象,例如,

  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和事务失败。
我该怎么做呢?

最佳答案

如果对象是列表,则需要遍历列表并单独合并特定实体。虽然您不能仅使用String。该对象必须是休眠实体。使用休眠实体,您可以这样做。

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

10-08 18:23