NutzCN Logo
问答 nutz dao在update时,设置FieldMatcher的ignoreZero无效
发布于 2414天前 作者 robinhood725 1938 次浏览 复制 上一个帖子 下一个帖子
标签:

我在使用nutzdao时,想在update时忽略实体中的null和0值,因此像如下这样建立了FieldMatcher,并设置ignoreNull和ignoreZero都为true。

FieldMatcher matcher = FieldMatcher.make(null, "^createrId|createTime$", true, true, true, true, true, true);

    FieldFilter.create(DataMeta.class, matcher).run(new Atom() {
       @Override
       public void run() {
         int m = dao.update(meta);
         result.add(m > 0);
       }
    });


update后我实体中的null值没有被更新到库中,但0值却被更新到库中了。
所以感觉ignoreZero没有生效,请问这是什么原因?

9 回复

什么版本呢?debug一下FieldFilter类看看?

换65试试,也许是bug哦

好的,我试试,多谢~

貌似和版本无关,换了65也一样。。debug了一下源码,没找到在哪过滤字段的

试试这样写

dao.update(DataMeta.class, Chain.from(meta, matcher, dao), Cnd.where("id", "=", meta.getId()));

这样写关于果然可以了,感谢!
刚才看api,发现FieldMatcher中确实有这么一句:
除locked/actived/ignoreNull之外的属性, 当前仅用于Cnd.from和Chain.from方法.

另外有另一个需求你看是否合理:实体bean中有一个属性isInit是boolean型,不赋值的话默认是false。我想update时忽略false值,所以FieldMatcher是否可以增加以一个ignoreFalse属性?

@robinhood725 后面的需求, 报个issue吧, 应该能加上的

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