Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I sort related entities in Ebean?

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.

like image 953
gooamoko Avatar asked May 29 '14 04:05

gooamoko


2 Answers

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;
    ...
}
like image 99
mguillermin Avatar answered Sep 18 '22 00:09

mguillermin


Use this

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

like image 39
user3662273 Avatar answered Sep 17 '22 00:09

user3662273