NutzCN Logo
问答 ignoreNull的使用逻辑
发布于 1742天前 作者 qq_a930202f 1921 次浏览 复制 上一个帖子 下一个帖子
标签:
T org.nutz.service.EntityService._insert(T t, boolean ignoreNull, boolean ignoreZero, boolean ignoreBlankStr)

如果ignoreNull=true,会把uuid设置的Prev变成无效?

	@Prev(els = { @EL("uuid(32)") })
	@Column("uuid")
	@ColDefine(type = ColType.VARCHAR)
	private String uuid;
9 回复

版本是最新的吗?

@wendal
[17:46:34:734] [INFO] - org.nutz.mvc.impl.NutLoading.load(NutLoading.java:55) - Nutz Version : 1.r.66-20180614

[17:58:32:823] [INFO] - org.nutz.mvc.impl.NutLoading.load(NutLoading.java:55) - Nutz Version : 1.r.68.v20190621
测试了最新版本也是一样情况

换成@PrevInsert试试

ignoreNull=false 的时候 @Prev 是有效的。
个人感觉这个逻辑应该是@Prev优先比较好,因为有些数据库字段有默认值,如果我使用ignoreNull=false ,那么默认值的字段就会被设置为Null。

	@PrevInsert(els = { @EL("uuid(32)") })
	@Column("uuid")
	@ColDefine(type = ColType.VARCHAR)
	private String uuid;

没有效果。

看到了文档

@Name
@Prev(els={@EL("uuid()")} // 使用dao.fastInsert(list)会出现name为null,因为@Prev不执行
@PrevInsert(@EL("uuid()"} // 使用dao.fastInsert(list)依然正常,@PrevInsert会执行
private String name; // 一个字段上不要同时写@Prev和@PrevInsert,上述示例只是为了说明功能

但是使用@PrevInsert(@EL("uuid()"}这个效果和ignoreNull=false是一样的,还是会造成数据库有默认值的字段被设置为Null

期望的使用逻辑是,Prev是真正的在dao操作之前就已经赋值完毕,不会被dao操作ignore

那没办法了,不能ignoreNull了

添加回复
请先登陆
回到顶部