How can I sort related entities in Ebean?

2019-04-26 16:00发布

I am using Play Framework and Ebean ORM. Say, I have 2 related entity classes (Card.java and FinalMark.java)

Card.java

@Entity
public class Card extends Model {

  private static final long serialVersionUID = 1L;
  @Id
  . . .
  @OneToMany(mappedBy = "card")
  public List<FinalMark> finalMarks;
  . . .
  public static Finder<Integer, Card> find =
    new Finder<>(Integer.class, Card.class);

}

FinalMark.java

@Entity
public class FinalMark extends Model {

  private static final long serialVersionUID = 1L;
  @Id
  @ManyToOne
  public Card card;
  . . .
  public static Finder<Integer, FinalMark> find = new Finder<>(Integer.class,
    FinalMark.class);
}

When I fetching Card instance (by Card.find.byId() for example), All related FinalMark instances also will be fetched. But how can I sort them? Is it possible by Ebean or I should sort resulting list?

Thank you for wasting your time.

2条回答
冷血范
2楼-- · 2019-04-26 16:28

Use this

Card.find.byId().orderBy("id asc"); //this will give the sorted order by id (entity)

查看更多
ら.Afraid
3楼-- · 2019-04-26 16:41

You can add the @javax.persistence.OrderBy annotation on your @OneToMany field.

For example, if you have a position field on your FinalMark entity, you could order on that field with this code :

@Entity
public class Card extends Model {
    ...
    @OneToMany(mappedBy = "card")
    @OrderBy("position asc")
    public List<FinalMark> finalMarks;
    ...
}
查看更多
登录 后发表回答