2011-08-31 57 views
0

我已经继承了一些代码库,包含一些模型和实现排序的请求。由于我不是冬眠大师,我很难过。Hibernate是否可以通过ManyToMany关系执行OrderBy?

(赦免的伪代码)

class Event { 
    @OneToMany(mappedBy="event", fetch=FetchType.LAZY) 
    @Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN}) 
    private List<Attendee> attendees = new ArrayList<Attendee>(50); 
} 

class Attendee { 
    @ManyToOne 
    @JoinColumn(name="event_id") 
    private Event event; 

    @ManyToOne 
    @JoinColumn(name="person") 
    private Person person; 
} 

class Person { 
    private string lastName; 
    private string firstName; 
} 

我希望能够通过人的姓氏/名字排序的事件的参与者列表中,但我不明白如何与做中间的桌子。我发现很多在线参考资料可以在没有中间表的情况下正常工作。我已经使用(Event类)的尝试:

@OrderBy("attendee.person.lastName") 
@OrderBy("person.lastName") 

,并在与会者类人:

@OrderBy("attendee.lastName") 
@OrderBy("lastName") 

没有任何的运气。有没有人有任何可能有洞察力的建议或参考?如果有帮助,或者有任何问题有助于深入挖掘,我可以发布实际的细节。

回答

1

我认为唯一的办法是

  • 执行专用的HQL请求来获取事件的所有参与者:select a from Attendee a inner join fetch a.person p where a.event = :event order by p.lastName, p.firstName
  • 有一种方法在事件返回attendeed的列表的副本,使用专用比较器进行分类。
相关问题