【发布时间】:2021-03-01 15:38:33
【问题描述】:
当我们尝试获取 Null 值的数据时
field(TABLE_NAME.COLUMN_NAME.in(null))
带有 IN 子句 得到空指针异常。
也许是因为这个。
@Override
public final Condition in(Collection<?> values) {
Field<?>[] fields = new Field[values.size()];
Iterator<?> it = values.iterator();
for (int i = 0; it.hasNext(); i++)
fields[i] = Tools.field(it.next(), this);
return in(fields);
}
在数据库中,我们可以在IN子句中提供null。
jooq https://github.com/jOOQ/jOOQ/issues/3867 中存在一个“无法修复”的问题
有一些选择:
- 在 IN 之前检查 null(在我的情况下,它是一个非常大的 select 语句)
如果我想让这成为可能,还有其他解决方法吗?
PS:在类似的注释中,“eq”工作得非常好:
@Override
public final Condition equal(Field<T> field) {
return compare(EQUALS, nullSafe(field, getDataType()));
}
编辑:'field(TABLE_NAME.COLUMN_NAME.in(null))' 这里的 null 是一个集合。
【问题讨论】: