2012-01-23 10 views
6

Mam dziwne wymagania biznesowe.Żądanie i przywoływanie za pośrednictwem wielu niepowiązanych typów obiektów za pomocą hibernacji

Mamy wiele niepowiązanych typów jednostek, które będą musiały być wyświetlane na ujednoliconej liście, z pewnymi podstawowymi informacjami z jednostki, posortowanymi według jedynego pola, na które mają gwarancję, DATE. Podmioty te mogą, ale nie muszą być w tej samej bazie danych. Zestaw wyników musi być możliwy do wyświetlenia.

Czy jest jakiś możliwy sposób na osiągnięcie tego poprzez kryteria, HQL lub jakiś przy zdrowych zmysłach?

Odpowiedz

4

Normalnie pozwoliłbyś wszystkim klasom rozszerzyć wspólną klasę bazową i użyć polimorficznego zapytania Hibernuj. Z twojego opisu nie wydaje się to wykonalne.

Oczywiście, jeśli chcesz przejść w tryb hibernacji, musisz najpierw pobrać rozmiar każdej niepowiązanej tabeli, określić, w której tabeli znajdują się rekordy na żądanej stronie (lub może w kilku) i ręcznie pobrać odpowiednie strona. Jest to naprawdę uciążliwe i zdecydowanie powinno być ukryte pod jakimś głębokim DAO.

Wygląda na to, że wystarczy tylko rozsądne rozwiązanie jest dobrym starym SQL z UNION i mapowaniem natywnego zapytania do twoich obiektów domeny. Hibernate obsługuje całkiem dobrze natywne zapytania.

+1

Prawidłowo - nie będzie wspólnej klasy bazowej. Twoja pierwsza sugestia była jedyną jak do tej pory myślą w stylu hibernacji, która nie wygląda ładnie. Moja jedyna niezdecydowanie pomiędzy wyborem jednej z tych dwóch metod to łatwość dodawania kolejnych elementów do miksu w późniejszym czasie. – bvulaj

Powiązane problemy