【发布时间】:2015-06-26 03:25:57
【问题描述】:
问题
如果ExamObject 属于ExamTask,我需要根据id 对ExamObjects 进行排序,如果它是ExamQuestion,则根据questionNumber 对其进行排序。我该怎么做?
重要
考试将只有一组ExamTask 或ExamQuestion。换句话说,一项考试不能同时包含 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
-
ExamTask扩展ExamObject -
ExamQuestion扩展ExamObject并有一个名为questionNumber的列
ExamObject
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class ExamObject {
@Id
private Long id;
...
ExamTask
@Entity
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
public class ExamTask extends ExamObject{
...
ExamQuestion
@Entity
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
public class ExamQuestion extends ExamObject{
@Column(name = "question_number")
private Integer questionNumber;
...
【问题讨论】:
-
出于好奇,尝试复制您的问题,但我似乎无法使映射工作。因此在这里发布了另一个问题stackoverflow.com/questions/29764533/…
-
不知道允许在代码中使用魔法(OrderBy 注释)。谢谢这位好人。
标签: java spring hibernate jpa spring-data