java - JPA @OrderBy 不对关系进行排序
问题描述
我有以下实体:
public class QuestionnaireTemplateEntity extends BaseEntity {
@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
@Column(updatable = false, nullable = false)
private String id;
@OneToMany(mappedBy="questionnaireTemplate", cascade = CascadeType.ALL)
@OrderBy("subQuestionnaireOrder ASC")
private Set<SubQuestionnaireTemplateEntity> subQuestionnaires = new HashSet<>();
}
public class SubQuestionnaireTemplateEntity extends BaseEntity {
@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
@Column(updatable = false, nullable = false)
private String id;
@OneToMany(mappedBy="subQuestionnaireTemplate", cascade = CascadeType.ALL)
@OrderBy("questionOrder ASC")
private Set<QuestionEntity> questions = new HashSet<>();
private Integer subQuestionnaireOrder;
}
public class QuestionEntity extends BaseEntity {
@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
@Column(updatable = false, nullable = false)
private String id;
@ManyToOne
@JoinColumn(name="sub_questionnaire_template_id")
private SubQuestionnaireTemplateEntity subQuestionnaireTemplate;
private Integer questionOrder;
}
现在,当我检索所有 QuestionnaireTemplate 时,我希望每个关系都已排序,但事实并非如此。没有什么是排序的,它总是随机的。
questionnaireTemplateRepository.findAll()
解决方案
我总是使用注释“@OrderColumn”而不是“@OrderBy”注释。这个答案提供了一个简单的例子,如何实现这个注释以在 Hibernate 中实现排序。
推荐阅读
- javascript - 在 MomentJS 中以 HH:mm 格式比较两次?
- google-sheets - 如何根据 Google 表格上的水平查找返回动态范围?
- javascript - 如何使用可选输入制作自定义日期选择器?反应
- java - 使用 Monte Media Library 录制带有计算机音频的屏幕
- testing - React 原生排毒 Jest 测试
- blockchain - Chainlink - 工作未完成
- r - 无法弄清楚如何从虚拟变量标题中删除列名
- python - 如何在 Windows 10 机器上完全卸载 Python 3.7?
- java - android模拟器运行时显示空白屏幕
- python - 当我使用“~”指示用户主路径时,为什么 `open("~/something")` 不起作用?