Возможно ли, чтобы Hibernate выполнял OrderBy через отношения ManyToMany? - PullRequest
0 голосов
/ 31 августа 2011

Я унаследовал кодовую базу с некоторыми моделями и просьбу реализовать их сортировку. Поскольку я не спящий гуру, я в тупике.

(простите за псевдокод)

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")

и в классе Attendee:

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

без удачи. Есть ли у кого-нибудь какие-либо предложения или рекомендации, которые могут иметь понимание? Я могу опубликовать фактические данные, если это поможет или если какие-то вопросы помогут глубже.

1 Ответ

1 голос
/ 31 августа 2011

Я думаю, что единственные пути

  • для выполнения специального запроса HQL, чтобы получить всех участников события: select a from Attendee a inner join fetch a.person p where a.event = :event order by p.lastName, p.firstName
  • иметь метод в Event, который возвращает копию списка участников, отсортированного с помощью выделенного компаратора.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...