使用休眠条件的具有多个条件的案例陈述

Case Statement with multiple conditions using hibernate criteria

SELECT status = 'A' 和 login='Y' 的情况 然后 'Login Allowed' else 'Enable the Login Status' 结束为 UserLoginStatus 来自用户。

我已经从 Whosebug 验证了几个答案,但找不到处理上述情况的代码。

下面的示例代码适用于单一条件(状态='A' 的情况)。

**CriteriaBuilder cbr = session_hiber.getCriteriaBuilder();
cbr.selectCase()
.when(cbr.equal(path.get("status"), "A"), "Login Allowed")
.otherwise("Enable the Login Status")
.alias("UserLoginStatus");**

如何使用 criteriaBuilder 处理具有多个条件的案例条件。

我在处理相同场景时遇到了这个 post。

以下代码对我有用。通过创建谓词列表,然后将其传递到 when 子句

List<Predicate> casePredicates = getcasePredicate(criteriaBuilder,contractBidRoot);
criteriaBuilder.selectCase()
                    .when(criteriaBuilder.and(casePredicates.toArray(new
                    Predicate[casePredicates.size()])), "DISCARD")
                    .otherwise(contractBidRoot.get(Constant.STATUS))));
public List<Predicate> getcasePredicate(CriteriaBuilder criteriaBuilder, Root<ContractBid> contractBidRoot)
{
       List<Predicate> casePredicates = new ArrayList<>(); 
       casePredicates.add(criteriaBuilder.lessThanOrEqualTo(contractBidRoot.get("date"),
       LocalDateTime.now()));
       casePredicates.add(criteriaBuilder.equal(contractBidRoot.get("status"), "DONE"));
       return casePredicates;
}