如何通过q​​uerydsl Web支持按实体中的嵌套属性订购?可能吗?

时间:2019-01-22 20:22:33

标签: java hibernate web querydsl

我正在尝试通过querydsl网络支持对实体中的任何属性进行排序,这对于第一级属性来说效果很好。另一方面,当尝试通过@ManyToOne注释的属性进行排序时,将忽略通过URL发送的参数。

这种行为甚至可以通过querydsl实现吗?如果是这样的话: 是否需要任何设置/配置才能使querydsl支持此操作?

假设用户实体为:

 @Data
 @Entity
 @Audited
 @EntityListeners(AuditingEntityListener.class)
 @AuditOverride(forClass = Auditable.class)
 public class User extends Auditable implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column
    private String name;

    @ManyToOne
    @JoinColumn(name = "type_id", nullable =  true, foreignKey = 
    @ForeignKey(name = "type_id"))
    private Type type;    

}

那么类型是:

@Data
@Entity
@Audited
@EntityListeners(AuditingEntityListener.class)
@AuditOverride(forClass = Auditable.class)
public class User extends Auditable implements Serializable {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @Column
   private String typeName;

}

这里是User的仓库:

@RepositoryRestResource
public interface UserRepository extends JpaRepository<User, Long>, 
QuerydslPredicateExecutor<User>, QuerydslBinderCustomizer<QUser> {
    @Override
    public default void customize(QuerydslBindings bindings, QUser root){
         bindings.bind(String.class)
                 .first((SingleValueBinding<StringPath, String>) StringExpression::containsIgnoreCase);
    }

}

我希望调用/users?sort=type.typeName,desc会以按typeName降序排列的排序用户列表作为响应,但是参数只会被忽略。

sort可能不是querydsl期望的参数,但是我无法找到Web支持的允许谓词列表。

0 个答案:

没有答案