2012-02-09 3 views
0

Я работаю над веб-приложением, использующим Hibernate, struts и extjs, Вот мой сценарий.Как использовать различные в hql

String hql = "from product"; 

В моей таблице продукта три столбца есть идентификатор, название, раздел

Мне нужны результаты, основанные на отчетливым название продукта, но у меня есть только вариант написания HQL другого варианта не существует.

я могу использовать группу, но мне нужен размер результата

так я использую hql.list().get(0);

В моем коде выше кода в общем методе, который каждый дао использует тот же метод.

Я могу использовать соединения, но данные в миллионах, поэтому выполнение запроса слишком медленное, Так может ли кто-нибудь помочь, как написать отдельное ключевое слово в hql.

+0

Ваш вопрос не ясен. Что вас хотите выбрать? Число отдельных названий продуктов? –

+0

Я хочу, чтобы данные о продуктах с разными названиями продуктов, идентификатор первичного ключа имеет разные значения, я должен их игнорировать. Если я получу данные, я автоматически получу счет – Bindu

ответ

0

Вот фрагмент hql, который мы используем. (Имена изменены для защиты личности)

String queryString = "select distinct f from Foo f inner join foo.bars as b" + 
       " where f.creationDate >= ? and f.creationDate < ? and b.bar = ?"; 
     return getHibernateTemplate().find(queryString, new Object[] {startDate, endDate, bar}); 

Стоит отметить, что «отчетливый» ключевое слово в HQL не отображает непосредственно к «различимой» ключевое слово в SQL.

Если вы используете «отличное» ключевое слово в HQL, то иногда Hibernate будет использовать отдельное ключевое слово SQL, но в некоторых ситуациях он будет использовать трансформатор результатов для получения отличных результатов. Например, когда вы используете внешнее соединение, как это:

выбрать отчетливым о из ордена о левом соединении принести o.lineItems

Это не возможно, чтобы отфильтровать дубликаты на уровне SQL в этом случае, так Hibernate использует resultTransformer для фильтрации дубликатов ПОСЛЕ выполнения SQL-запроса.

+0

Мне нужно использовать выделение в той же таблице, но идентификатор первичного ключа имеет разные значения. Я хочу игнорировать значения первичного ключа, я просто хочу, чтобы данные продуктов с различными значениями продукта потому что имена дублируются.Я использовал запрос, например «Выбрать отдельный p из продукта p», но его показ всех записей, которые я хочу получить, например, из продукта p, где указано (p.name), его нет в спящем режиме, но мне нужен этот тип – Bindu

+0

Спасибо за ваш ответный jramay – Bindu

0

У меня есть ответ для языка запросов спящего режима, чтобы использовать отдельные поля. Вы можете использовать . Если вы используете SQL-запрос, он возвращает String List. Вы не можете использовать возвращаемое значение для класса Entity. Таким образом, ответом на решение этого типа проблемы является использование HQL с SQL.

ОТ FLIGHT_ROUTE F ГДЕ F.ROUTE_ID
IN (SELECT, FROM SF.ROUTE_ID FLIGHT_ROUTE SF GROUP BY SF.TO_CITY) ";

Из заявления SQL запросов он получил DISTINCT ROUTE_ID и ввод в список . а в запросе фильтра отчетливое TO_CITY от IN (List).

Возвращаемый тип является типом Entity Bean. Таким образом, вы можете его в AJAX, таких как AutoComplement.

Смежные вопросы