Czy istnieje sposób na utworzenie Distinct zapytania w HQL. Albo za pomocą słowa kluczowego „wyraźny”, albo w inny sposób. Nie jestem pewien, czy odrębny jest prawidłowym kluczem do HQL, ale szukam odpowiednika HQL słowa kluczowego SQL „wyraźny”.
100
Warto zauważyć, że
distinct
słowo kluczowe w HQL nie jest odwzorowywane bezpośrednio nadistinct
słowo kluczowe w SQL.Jeśli użyjesz
distinct
słowa kluczowego w HQL, to czasami Hibernate użyjedistinct
słowa kluczowego SQL, ale w niektórych sytuacjach użyje transformatora wyników, aby uzyskać różne wyniki. Na przykład, gdy używasz sprzężenia zewnętrznego takiego:W tym przypadku nie jest możliwe odfiltrowanie duplikatów na poziomie SQL, dlatego Hibernate używa
ResultTransformer
do odfiltrowania duplikatów po wykonaniu zapytania SQL.źródło
zrób coś takiego następnym razem
źródło
Możesz również używać
Criteria.DISTINCT_ROOT_ENTITY
z zapytaniem Hibernate HQL.Przykład:
źródło
Miałem problemy z transformatorami wyników w połączeniu z zapytaniami HQL. Kiedy próbowałem
to nie zadziałało. Musiałem przekształcić ręcznie w ten sposób:
Z Criteria API transformatory działały dobrze.
źródło
Moje główne zapytanie wyglądało w modelu tak:
I nadal nie uzyskiwałem tego, co uważałem za „wyraźne” wyniki. Były po prostu różne na podstawie kombinacji klawiszy podstawowych na stole.
Więc
DaoImpl
dodałem zmianę o jedną linię i skończyło się na uzyskaniu "wyraźnego" zwrotu, którego chciałem. Przykładem może być to, że zamiast czterokrotnie zobaczyć 00, teraz widzę to tylko raz. Oto kod, który dodałem doDaoImpl
:Mam nadzieję, że to pomogło! Po raz kolejny może to działać tylko wtedy, gdy przestrzegasz praktyk kodowania, które implementują usługę, dao i model typu projektu.
źródło
Załóżmy, że masz jednostkę klienta zmapowaną do tabeli CUSTOMER_INFORMATION i chcesz uzyskać listę odrębnych firstName klienta. Możesz użyć poniższego fragmentu, aby uzyskać to samo.
Mam nadzieję, że to pomoże. Więc tutaj używamy grupy by zamiast używać słowa kluczowego odrębnego.
Również wcześniej było mi trudno użyć odrębnego słowa kluczowego, gdy chcę go zastosować do wielu kolumn. Na przykład chcę uzyskać listę odrębnych firstName, lastName, a następnie grupowanie według po prostu zadziała. W tym przypadku miałem trudności z użyciem odrębnego.
źródło
Mam odpowiedź na Hibernate Query Language, aby używać odrębnych pól. Możesz użyć * SELECT DISTINCT (TO_CITY) FROM FLIGHT_ROUTE *. Jeśli używasz zapytania SQL , zwraca listę ciągów. Nie można jej użyć zwracanej wartości przez klasę jednostki. Zatem odpowiedzią na ten typ problemu jest użycie języka HQL z SQL .
Z SQL zapytania otrzymano DISTINCT ROUTE_ID i wprowadzono jako listę. A zapytanie IN filtruje odrębne TO_CITY z IN (Lista).
Typ zwrotu to typ Entity Bean. Więc możesz to zrobić w AJAX, takim jak AutoComplement .
Może wszystko będzie w porządku
źródło
Możesz w ten sposób określić odrębne słowo kluczowe w konstruktorze kryteriów.
I utwórz konstruktora pola w swojej klasie modelu.
źródło
Jeśli potrzebujesz nowego słowa kluczowego dla niestandardowego DTO w instrukcji select i potrzebujesz odrębnych elementów , użyj nowego poza nowym, jak poniżej:
źródło
Możesz po prostu dodać GROUP BY zamiast Distinct
źródło