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