2011-08-31 60 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的列表的副本,使用專用比較器進行分類。
相關問題