Spring 数据:按每行的条件结果排序

Spring data: order by result of condition for each row

简单地说,SQL 可以计算运行时变量,例如每一行的 IF/SUM,并且可以将其用于排序。 我关于在 QueryDSL/Criteria API 中做类似事情的可能性的问题 可以吗?

我有一个名为 OrderSummary 的实体,其中包含以下字段:

@Entity
@Table(name = "orders")
public class OrderSummary implements Serializable {

    @Id
    @Column(name = "id")
    @GeneratedValue
    private Long id;

    @Column(name="title")
    private String title;

    @Column(name = "fixing_due_date")
    @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
    private DateTime fixingDueDate;
    ...
}

而且我生成了Q-class.

所以我尝试申请订购以下说明符:

private OrderSpecifier<Boolean> order() {
    QOrderSummary orderSummary = QOrderSummary.orderSummary;
    DateTimePath<DateTime> fixingDueDate = orderSummary.fixingDueDate;
    BooleanExpression be = fixingDueDate.after(DateTime.now());
    OrderSpecifier<Boolean> ose = be.desc();
    return ose;
}

但是我遇到了异常"com.mysema.query.types.PredicateOperation cannot be cast to com.mysema.query.types.Path"

我问了一个类似的问题(关于 CriteriaAPI),但不幸的是没有人理解以下内容的真正含义: JpaRepository: Spring Sort for runtime query variabels

每行按条件结果排序的问题

谢谢!

所以找到了解决方案,但是以我喜欢的方式使用 jpa 规范: JpaRepository: Spring Sort for runtime query variabels