3

在使用带有 bean 的空值属性的填充调用时,我遇到了 SQLUpdateClause 的问题。它只是从生成的更新 SQL 中跳过空值属性,而不是将相应的字段设置为 NULL。

例子:

public class Bean {

    private Long id;

    private String value;

    private String value2;

    ...
}

Bean bean = ...

bean.setValue(null);
bean.setValue("value2");

SQLUpdateClause update = new SQLUpdateClause(connection, dialect, qBean);

update.populate(bean).where(qBean.id.eq(...)).execute();

将产生 SQL:

update bean set value2 = 'value2' where bean.id = ...

而不是想要的:

update bean set value = null, value2 = 'value2' where bean.id = ...

这里有什么帮助吗?... 请

4

1 回答 1

7

检查querydsl源代码时,找到了解决方案:

...
update.populate(bean, DefaultMapper.WITH_NULL_BINDINGS)
      .where(qBean.id.eq(...))
      .execute();
...

希望它可以帮助某人

于 2012-09-10T11:02:50.577 回答