Mam klasę Osoba, która ma zestaw książek. W konkretnym przypadku nie ma sensu posiadanie uporządkowanej lub posortowanej kolekcji.Hibernate: zamawianie zestawu
Teraz powiedz, że mam stronę wyszukiwania z tabelą przedstawiającą połączenie osoby i książki. Chcę być w stanie sortować wyniki według pól zarówno od osoby i książki, a następnie uzyskać listę z hibernacji i iteracji nad nim.
Ponieważ kolekcja jest zbiorem, kolejność książek zniknęła (zestaw persystyczny (PersistentSet of Hibernate) opakowuje HashSet of Books, który nie jest uporządkowany).
Dzięki temu podejściu nie mogę mieć wyników również uporządkowanych według pól książki.
Jeśli zmienię kolekcję z Ustaw na listę, mój model jest semantycznie niepoprawny. Nie ma sensu utrzymywać porządek w modelu.
Czy istnieje sposób na zachowanie porządku książek? Być może istnieje sposób, aby PersistentSet opakował LinkedHashSet (który jest uporządkowany), gdzie kolejność jest zdefiniowana przez moje kryteria wyszukiwania?
Pozdrawiam!
Dzięki za odpowiedź (+1). Tak, widziałem to. Ale w tym przykładzie ustalili, że zamówienie jest na pewnym polu. Chcę, aby to pole (pola) były ustawione za pośrednictwem API Criteria, w zależności od tego, co użytkownik kliknął w interfejsie użytkownika. –
Możesz również określić kolejność wyników w zapytaniu Kryteria, niezależnie od tego, co określisz w odwzorowaniu. http://docs.jboss.org/hibernate/stable/core/reference/en/html/querycriteria.html#querycriteria-ordering –
Tak, możesz, ale niestety kolejność w mapowaniu (lub @OrderBy) ma pierwszeństwo , co sprawia, że porządek ustawiony według kryteriów jest bezużyteczny. A przynajmniej przychodzi po sortowaniu kolejności według mapowania. –