通过 Hibernate 条件查询通过两列的 COALESCE 实现搜索

Implement search by COALESCE of two columns via Hibernate criteria query

我正在尝试在 CriteriaBuilder 中转换以下查询:

select * from bau_case where coalesce(actual_category, suggested_category ) = 'TC_1'; 

到目前为止我看到的所有示例都是基于合并搜索值而不是搜索字段,因此没有多大用处。这就是我所坚持的:

static Predicate buildCaseCategoryPredicate(Root<BauCaseEntity> root, CriteriaBuilder cb, RefDataDto caseCategory) {
    CriteriaBuilder.Coalesce<String> coalesce = cb.coalesce();
    coalesce.value(root.get(FIELD_ACTUAL_CASE_CATEGORY));
    coalesce.value(root.get(FIELD_SUGGESTED_CASE_CATEGORY));
    c.select(coalesce);
       ????
}

你可以尝试使用这样的东西:

static Predicate buildCaseCategoryPredicate(Root<BauCaseEntity> root, CriteriaBuilder cb, RefDataDto caseCategory) {
    return cb.equal(
       cb.coalesce(
          root.get(FIELD_ACTUAL_CASE_CATEGORY),
          root.get(FIELD_SUGGESTED_CASE_CATEGORY)
       ),
       "TC_1"
    );
}