Есть ли способ создать отчетливый запрос в HQL. Либо с помощью ключевого слова «отличное», либо каким-либо другим способом. Я не уверен, является ли отличная ключевая работа для HQL допустимой, но я ищу HQL-эквивалент ключевого слова SQL «отличная».
100
Стоит отметить, что
distinct
ключевое слово в HQL не отображается напрямую наdistinct
ключевое слово в SQL.Если вы используете
distinct
ключевое слово в HQL, то иногда Hibernate будет использоватьdistinct
ключевое слово SQL, но в некоторых ситуациях он будет использовать преобразователь результатов для получения четких результатов. Например, когда вы используете такое внешнее соединение:В этом случае невозможно отфильтровать дубликаты на уровне SQL, поэтому Hibernate использует a
ResultTransformer
для фильтрации дубликатов после выполнения запроса SQL.источник
сделай что-нибудь подобное в следующий раз
источник
Вы также можете использовать
Criteria.DISTINCT_ROOT_ENTITY
Hibernate HQL-запрос.Пример:
источник
У меня были проблемы с преобразователями результатов в сочетании с HQL-запросами. Когда я попробовал
это не сработало. Пришлось трансформировать вручную вот так:
Трансформаторы Criteria API работали нормально.
источник
Мой основной запрос в модели выглядел так:
И я все еще не получал того, что я считал «отчетливым». Они просто отличались на основе комбинации первичных ключей в таблице.
Итак,
DaoImpl
я добавил одну строчку и в итоге получил желаемый "отчетливый" результат. Например, вместо того, чтобы увидеть 00 четыре раза, теперь я вижу его только один раз. Вот код, который я добавил вDaoImpl
:Надеюсь, это помогло! Опять же, это может сработать только в том случае, если вы следуете методам программирования, которые реализуют сервис, дао и тип проекта.
источник
Предположим, у вас есть сущность клиента, сопоставленная с таблицей CUSTOMER_INFORMATION, и вы хотите получить список отдельных firstName клиента. Вы можете использовать приведенный ниже фрагмент, чтобы получить то же самое.
Я надеюсь, что это помогает. Итак, здесь мы используем group by вместо использования отдельного ключевого слова.
Также ранее мне было трудно использовать отдельное ключевое слово, когда я хочу применить его к нескольким столбцам. Например, я хочу получить список отдельных firstName, lastName, а затем group by будет просто работать. В этом случае у меня возникли трудности с использованием отличного.
источник
У меня есть ответ на использование языка запросов Hibernate для использования разных полей. Вы можете использовать * SELECT DISTINCT (TO_CITY) FROM FLIGHT_ROUTE *. Если вы используете SQL- запрос, он возвращает список строк. Вы не можете использовать его возвращаемое значение по классу сущности. Итак, ответ для решения такой проблемы - использовать HQL с SQL .
Из оператора запроса SQL он получил DISTINCT ROUTE_ID и введен в виде списка. И запрос IN фильтрует отдельный TO_CITY из IN (List).
Тип возврата - тип Entity Bean. Таким образом, вы можете использовать AJAX, например AutoComplement .
Может все будет хорошо
источник
Вы можете использовать ключевое слово в своем конструкторе критериев следующим образом.
И создайте конструктор поля в своем классе модели.
источник
Если вам нужно использовать ключевое слово new для настраиваемого DTO в операторе select и вам нужны отдельные элементы , используйте new за пределами new, например, следующим образом:
источник
Вы можете просто добавить GROUP BY вместо Distinct
источник