Spring Data JPA 对嵌套集合进行排序

标签 spring hibernate sorting jpa spring-data

我有以下域对象:

@Entity
public class Item {

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   private Long id;
   private String name;

   @OneToMany
   private List<PropertyDefinition> propertyDefinitions;
}

@Entity
public class PropertyDefinition {

   @Id
   private Long id;

   private final String name;
   private final String value;
}

我想对项目进行排序,例如名为 PropertyDefinition.value 的“标题”

如何使用 Spring Data JPA 做到这一点?

Iterable<Item> items = itemRepository.findAll(new Sort("???"));

示例代码可以在这里找到:
https://github.com/altfatterz/sort-poc/

感谢任何反馈。

最佳答案

您可以使用 JPA 或 Hibernate @OrderBy 注释:

@OneToMany
@OrderBy("value ASC") // sort by value ASC
private List<PropertyDefinition> propertyDefinitions;

否则,您可以创建自己的查询,以使用 Criteria 或 HQL Query 对它们进行排序。

关于Spring Data JPA 对嵌套集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17862967/

相关文章:

java - 在组件构造函数上使用 `@Lazy` 等于注释每个参数吗?

java - WebMvcAutoConfiguration 未激活

hibernate - 从实体 pojo 中删除 Hibernate?

c++ - 中位数 3 快速排序实现

mysql - 按另一个表中的时间戳对 MySQL 查询进行排序

java - 无法从 JSON 转换;意外字符 ('f'(代码 102)): Expected space separating root-level values at (String )"5f19a7e99933db43cb23e83d"

java - 如何在Spring应用程序中访问图像文件夹

java - 三路 hibernate ORM 映射 - 如何?

java - org.hibernate.exception.ConstraintViolationException : could not execute statement

linux - 随机排序不适用于 --random_source=FILE