gpt4 book ai didi

Java Order by 具有不同子对象类型的一对多关系

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:40 24 4
gpt4 key购买 nike

问题

如果 ExamObject 属于 ExamTask,我需要根据 id 对 ExamObjects 进行排序,并根据 questionNumber< 对其进行排序 如果它是 ExamQuestion。我该怎么做?

重要

一次考试只有一组ExamTaskExamQuestion。换句话说,一次考试不能混合使用 ExamTask 和 ExamQuestion。

背景信息

我有一个名为 Exam 的实体类,此类可以包含一个或多个 ExamObject 实体。

@Entity
public class Exam {
@OneToMany(mappedBy = "exam" ...)
@OrderBy("id") //I need to order this by question number if its ExamQuestion
private Set<ExamObject> objects;
...
}

ExamObject 可以是以下两种类型,使用 JOINED

  1. ExamTask 扩展 ExamObject
  2. ExamQuestion 扩展 ExamObject 并有一个名为 questionNumber 的列

考试对象

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class ExamObject {
@Id
private Long id;
...

考试任务

@Entity
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
public class ExamTask extends ExamObject{
...

考试题

@Entity
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
public class ExamQuestion extends ExamObject{
@Column(name = "question_number")
private Integer questionNumber;
...

最佳答案

我认为您的问题是您在实体中使用了 Set。 Set 不会维持秩序。当您的关系加载时,集合将不保证插入顺序。尝试改用列表。列表将维护插入顺序。

@Entity
public class Exam {
@OneToMany(mappedBy = "exam" ...)
@OrderBy("id") //I need to order this by question number if its ExamQuestion
private List<ExamObject> objects;
...
}

希望对您有所帮助。

关于Java Order by 具有不同子对象类型的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29730343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com