【问题标题】:JPA @OrderBy doesn't sort relationshipsJPA @OrderBy 不对关系进行排序
【发布时间】:2020-11-29 12:32:09
【问题描述】:

我有以下实体:

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()

【问题讨论】:

  • 使用List 代替Set 是否有效?
  • 你也可以尝试使用SortedSet
  • 我自己的愚蠢错误。确实是因为Set。 SortedSet 和 List 都有效。如果您回答问题,我会将其标记为答案。

标签: java spring-boot jpa spring-data-jpa


【解决方案1】:

我总是使用注释“@OrderColumn”而不是“@OrderBy”注释。 This answer 提供了一个简单的例子,如何实现这个注解来实现 Hibernate 中的排序。

【讨论】:

  • 感谢您的帮助。但是,当我查看这两个注释之间的区别时,此 OrderColumn 添加了一个新列,该列在元素更改时跟踪位置,然后位置也会更新。我不知道这是否是我想要的。将 OrderBy 与 List 或 SortedSet 一起使用时,它可以工作。
  • 你已经有一个整数属性,你想用它来订购。您只需要说这应该是您的订单列。
猜你喜欢
  • 1970-01-01
  • 2018-04-04
  • 2019-11-25
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多