Как я могу заказать вложенные свойства в моей сущности через веб-поддержку querydsl?Является ли это возможным? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь поддерживать сортировку через веб-поддержку 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, но я не смог найти список разрешенных предикатов для веб-поддержки.

...