一.问题场景:
场景:我有一套试卷试卷(examination表中)里有好多题目(question表中),题目有A,B,C,D 选项。建立类
Examination类中有
@OneToMany(targetEntity = Question.class, cascade = CascadeType.REMOVE, mappedBy = "examination", fetch = FetchType.LAZY)
private Set<Question> questions = new HashSet<>();
Quesiton类中有
@OneToMany(targetEntity = ChoiceAnswer.class, fetch = FetchType.LAZY, mappedBy = "question", cascade = CascadeType.REMOVE)
private Set<ChoiceAnswer> choiceAnswers = new HashSet<>();
问题:当我拿出一个Examination怎样保证questions是按照问题添加的顺序排列的,如何保证问题中的choiceAnswers是按A,B,C,D排列的。
二.解决办法:
可能有人会说用List来进行关联映射的确list,Map的性能比Set好的多但是请看(这里)
其实很简单用注解@OrderBy
代码如下:
@OneToMany(targetEntity = Question.class, cascade = CascadeType.REMOVE, mappedBy = "examination", fetch = FetchType.LAZY)
@OrderBy("id")
private Set<Question> questions = new HashSet<>();
@OneToMany(targetEntity = ChoiceAnswer.class, fetch = FetchType.LAZY, mappedBy = "question", cascade = CascadeType.REMOVE)
@OrderBy("theOption")
private Set<ChoiceAnswer> choiceAnswers = new HashSet<>();