当前位置: 首页 > 知识库问答 >
问题:

如何在谓词中使用if/else语句?

洪凯定
2023-03-14

这里有一段代码:

final CriteriaBuilder builder = JPA.em().getCriteriaBuilder();
    final CriteriaQuery<Ticket> criteria = builder.createQuery(Ticket.class);
    Root<Ticket> ticketRoot = criteria.from(Ticket.class);
    Join<Ticket, Order> order = ticketRoot.join("order", JoinType.LEFT);
    Join<Ticket, EventGroup> eventGroups = ticketRoot.join("eventGroup", JoinType.LEFT);
    final List<javax.persistence.criteria.Predicate> predicates = new ArrayList<>();


if (from != null) {
        predicates.add(
            builder.or(
                builder.greaterThanOrEqualTo(order.get("completedOn"), from),
                builder.greaterThanOrEqualTo(ticketRoot.get("refundedAt"), from))
        );
      }

它现在查找具有completedon或日期在from之后的refundedat的票据。我想改变这个。

共有1个答案

周高畅
2023-03-14

您是否尝试使用selectcase,如下所示:

predicates.add(
    (Predicate)
    builder.selectCase()
           .when(
               builder.isNotNull(ticketRoot.get("refundedAt")), 
               builder.greaterThanOrEqualTo(ticketRoot.get("refundedAt"), from)
           )
           .otherwise(builder.greaterThanOrEqualTo(order.get("completedOn"), from))
           .as(Boolean.class));

);
 类似资料:
  • 我试图通过这段代码来展示我对Python的基础知识的了解,并且它可以工作: 我还想通过这段代码展示我对Java基础知识的了解,但它不起作用: 我很困惑,因为这一个确实有效: 你们知道怎么了吗?

  • Swift 条件语句 一个 if 语句 后可跟一个可选的 else if...else 语句,else if...else 语句 在测试多个条件语句时是非常有用的。 当你使用 if , else if , else 语句时需要注意以下几点: if 语句后可以有 0 个或 1 个 else,但是如果 有 else if 语句,else 语句需要在 else if 语句之后。 if 语句后可以有 0

  • else语句可以与if语句结合使用。 else语句包含else语句中的条件表达式解析为0或FALSE值时执行的代码块。 else语句是一个可选语句, else后面最多只能有一个else语句。 语法 (Syntax) if...else语句的语法是 - if expression: statement(s) else: statement(s) 流程图 (Flow Diagram) 例

  • 但是,VSC告诉我“构造函数调用必须是构造函数中的第一条语句”。我怎样才能克服这个问题?

  • 问题内容: 为什么SQL Server坚持认为临时表已经存在!一个或另一个将会发生!,所以永远不会这样。 错误是:数据库中已经有一个名为“#temp1”的对象。 有没有解决这个问题的优雅方法?如果@checkvar为null,我要整个表,否则,只给我其中@checkvar =某物的值 编辑:该列是varchar,而不是int。 问题答案: 您不能只重写语句吗?

  • 我有一个xslt文档。我想在这个文档中使用if语句。我的代码是: 如果返回的值是code1然后写A,如果返回的值是code2然后写B。 我该怎么做?