【发布时间】:2017-12-29 11:36:51
【问题描述】:
我有以下类描述的实体映射数据库:
@Entity(name = "myitem")
public class MyItem {
@Id
private Long id;
private String type;
}
@Entity(name = "mycontainer")
public class MyContainer {
@Id
private Long id;
@ManyToOne
private MyItem item;
...
}
@Entity(name = "mytable")
public class MyTable {
@Id
private Long id;
@OneToMany
private Set<MyContainer> containers;
...
}
我正在使用 JPA Criteria API 来过滤和排序我的数据。排序和过滤参数动态变化并从 db 中获取结果,我使用 Spring Data JPA Page<S> findAll(Example<S> example, Pageable pageable) (doc)。
它适用于基本排序,但是当我想按某种类型的 MyItem.id 对 MyTable 进行排序时,我遇到了问题。示例:每个容器有 2 个不同类型的项目,我想按只有一种类型的项目 ID 对表进行排序,而忽略第二个值。
甚至可以使用 Spring Data JPA 完成这样的排序吗?
编辑:我在这里需要一种动态方法,因为重要的是我的排序可以通过用户选择的各种字段来完成。
【问题讨论】:
-
嗨。我正在寻找一些动态排序解决方案,因为在我的系统中排序应该由用户指定的字段完成。在存储库中定义更多方法对我没有帮助。
标签: java spring spring-data spring-data-jpa jpa-criteria