How can I sort related entities in Ebean?
Asked Answered
F

2

8

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.

Felafel answered 29/5, 2014 at 4:7 Comment(0)
M
10

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;
    ...
}
Maggard answered 3/6, 2014 at 15:42 Comment(0)
J
3

Use this

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

Jump answered 30/5, 2014 at 11:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.