【发布时间】:2017-07-04 21:48:42
【问题描述】:
我有一个使用 Spring Boot 1.5.1 和 Spring Data Rest 的数据库服务。我将我的实体存储在 MySQL 数据库中,并使用 Spring 的 PagingAndSortingRepository 通过 REST 访问它们。我发现this 声明支持按嵌套参数排序,但我找不到按嵌套字段排序的方法。
我有这些课程:
@Entity(name = "Person")
@Table(name = "PERSON")
public class Person {
@ManyToOne
protected Address address;
@ManyToOne(targetEntity = Name.class, cascade = {
CascadeType.ALL
})
@JoinColumn(name = "NAME_PERSON_ID")
protected Name name;
@Id
protected Long id;
// Setter, getters, etc.
}
@Entity(name = "Name")
@Table(name = "NAME")
public class Name{
protected String firstName;
protected String lastName;
@Id
protected Long id;
// Setter, getters, etc.
}
例如使用方法时:
Page<Person> findByAddress_Id(@Param("id") String id, Pageable pageable);
并调用URI http://localhost:8080/people/search/findByAddress_Id?id=1&sort=name_lastName,desc,排序参数被Spring完全忽略。
sort=name.lastName 和 sort=nameLastName 参数也不起作用。
我形成的 Rest 请求是错误的,还是缺少一些配置?
谢谢!
【问题讨论】:
-
name.lastName 将是要使用的属性。在 Hopper 版本中按嵌套属性排序对我来说很好,但我在 Ingalls 版本的 RC 版本中确实遇到了以下错误。这被报告为已修复,但我还没有尝试过。 jira.spring.io/browse/…
-
@AlanHay 你是
Man,在降级到Hopper 版本后与我合作<spring.data.jpa.version>1.10.10.RELEASE</spring.data.jpa.version <spring.data.rest.webmvc.version>2.5.10.RELEASE</spring.data.rest.webmvc.version> -
@AlanHay 顺便说一句,我试过
v3.0.0.M3报告说已修复但无法与我合作。 -
有人能解决这个问题吗?它不适用于 SDR 3.0.2.RELEASE 和 Spring Boot 1.5.8。我正在使用 sort=property_subproperty。谢谢
-
我们遇到了同样的问题(使用 Spring Boot 1.5.9 和 Spring Data REST 2.6.9)。我们尝试用于排序的嵌套属性被包含
@JsonProperty(access = READ_ONLY)的 Jackson Mixin 覆盖。删除此注释会导致此嵌套属性的正确排序行为。
标签: spring spring-boot spring-data spring-data-rest