JPA 条件查询:如何 select multiSelect 的默认值

JPA Criteria Query: How to select default value for multiSelect

我有一个 class 有 11 个字段用于 multiSelect 查询。

我的问题是,目前我有 10 个字段的数据。其中之一是null,以后会用到。

query.multiselect(
    selection1,
    selection2,
    ...
    selection10
)

因此,我创建了包含 10 个字段的新构造函数,但由于参数过多,代码有异味。我认为如果我的多选看起来像更好:

query.multiselect(
    selection1,
    selection2,
    ...
    selection10,
    selection11 // this should return default null value
)

我该怎么做?

CriteriaQuery.multiselect takes a list of Selection objects. The Selection interface is extended by Expression, and you can use CriteriaBuilder.literal to create a constant expression. Or CriteriaBuilder.nullLiteral 对于您想要常量 null 的情况。所以我会尝试:

query.multiselect(
    selection1,
    selection2,
    ...
    selection10,
    criteriaBuilder.nullLiteral(String.class) // use the class of the value that
                                              // will be selected in the future
)