我正在尝试使用休眠更新数据库中的单个记录,因此我想合并更新的对象。我有代码来更新对象并返回合并的休眠实体对象,例如,
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);
}