一个pojo对象同时声明@Id @Name, 通过@Name字段更新对象的时候更新不成功,有没有什么好的解决方法?
15 回复
@wendal 是的,Id没有值的情况下。
@wendal updateIgnoreNull . 这个方法用不了哦。
这个报个 issue 吧
来自美丽的 NutzCN
@wendal @zozoh
我自己封装了一下update 和 updateIgnoreNull 这样写应该没问题吧
@Override
public int update(BaseModel obj) {
//如果id为空,无法更新。
if(Strings.isBlank(obj.getId())){
return 0;
}else{
//忽略id
FieldMatcher fieldMatcher = FieldMatcher.create(true);
//从对象创建chain
Chain chain = Chain.from(obj,fieldMatcher);
//默认使用uuid作为查询条件
Cnd cnd = Cnd.where("id","=",obj.getId());
return this.dao().update(obj.getClass(),chain,cnd);
}
}
/**
* 更新数据忽略值为null的字段
*
* @param obj
* @return
*/
@Override
public int updateIgnoreNull(BaseModel obj) {
if(Strings.isBlank(obj.getId())){
return 0;
}else{
//忽略id
FieldMatcher fieldMatcher = FieldMatcher.create(true);
//忽略null
fieldMatcher.setIgnoreNull(true);
//从对象创建chain
Chain chain = Chain.from(obj,fieldMatcher);
//默认使用uuid作为查询条件
Cnd cnd = Cnd.where("id","=",obj.getId());
return this.dao().update(obj.getClass(),chain,cnd);
}
}
@wendal Long
只是不明白,为啥用名字,而不是 ID, 你更新前没有从数据库里先 fetch 一下吗?
来自美丽的 NutzCN
添加回复
请先登陆