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;
}  

现在,当我检索所有的问卷模板时,我希望每个关系都已排序,但事实并非如此。没有什么是排序的——它总是随机的。

questionnaireTemplateRepository.findAll()

我总是使用注释"@OrderColumn"而不是"@OrderBy"。这个答案提供了一个如何在Hibernate中实现该注释以实现排序的简单示例。

最新更新