QueryDSL 中的动态排序

Dynamic sorting in QueryDSL

假设我有一个实体:

@Entity
public class Person {
    @Id
    private int id;
    private String name;
    private Date birthdate;
}

并且我想要一种方法,该方法将 return OrderSpecifier 用于基于 String 参数的该实体的字段,该参数将是实体字段之一的名称。

/**
 * fieldName - name of field from Person entity
 */
private OrderSpecifier<?> getSortedColumn(Order order, String fieldName){
    //how to implement this???        
}

我实际上是这样做的:

/**
 * fieldName - name of field from Person entity
 */
private OrderSpecifier<?> getSortedColumn(Order order, String fieldName){
    Path<Object> fieldPath = Expressions.path(Object.class, QPerson.person, fieldName);     
    return new OrderSpecifier(order, fieldPath);
}