我正在尝试使用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失败。 我该怎么做呢?
答案 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);
}