通过 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"
);
}
我正在尝试在 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"
);
}