【问题标题】:Querydsl update clause populate skips bean null value propertiesQuerydsl 更新子句填充跳过 bean 空值属性
【发布时间】:2012-09-10 10:26:48
【问题描述】:

在使用带有 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 = ...

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

【问题讨论】:

    标签: java querydsl


    【解决方案1】:

    查看querydsl源代码,找到解决办法:

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

    希望对某人有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 2013-12-05
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多