我在使用QueryDsl更新具有空值的字段时遇到了一个问题。
以下代码为例:
entity.setText(null);
new SQLUpdateClause(connection, templates, QEntity )
.where(...)
.populate(entity)
.execute();
默默地忽略“text”字段的更新。
挖掘代码我找到了一种正确设置空值的方法:
entity.setText(null);
new SQLUpdateClause(connection, templates, QEntity )
.where(...)
.populate(entity, DefaultMapper.WITH_NULL_BINDINGS)
.execute();
这导致了几个问题:
默认情况下决定忽略更新空值的理由是什么? 抛出异常会破坏现有的API吗?
答案 0 :(得分:0)
它使插入语句的生活变得非常简单。
处理更新时,只需检索原始记录,进行必要的更改,然后使用DefaultMapper.WITH_NULL_BINDINGS'upsert'修改后的记录。