hibernate用关联映射时,Set集合如何按指定属性排序

一.问题场景:

场景:我有一套试卷试卷(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<>();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值