У меня есть Запрос Критериев, который присоединяется к второй таблице B, для выбора объектов из таблицы A. Проблема, что этот запрос возвращает некоторые объекты из таблицы A многократно. Но мне нужны результаты, чтобы быть отличным.
Использование Критериев. DISTINCT_ROOT_ENTITY бесполезен, потому что это отфильтровывает несколько происшествий после того, как SQL-запрос выполнялся. Так, когда я ограничиваю свои результаты 20 хитами, я заканчиваю только с 4, хотя существует больше записей, то соответствие мой запрос.
В чистом SQL я просто могу добавить "идентификатор GROUP BY" к запросу, и все прекрасно, потому что соединение таблицы B только используется, для выбора объектов из таблицы A. Но с API критериев я не могу сделать этого. Единственный способ добавить "GROUP BY" при помощи Проекций. Но затем, я заканчиваю со скалярными величинами, не с реальным экземпляром моего класса. Используя ограничение SQL не работает также, потому что в спящем режиме, добавляет bogous "1=1" после моего "GROUP BY" - пункт.:(
Какие-либо идеи?
Хорошо, я исправил его:
Когда я изменил манифест на целевую версию 1,5, появилось миллион ошибок и только одна не была связана с непротиворечивостью класса R - в атрибутах файла манифеста «targetSdkVersion» и «maxSdkVersion» не существовало в sdk 1,5
Из-за этого класса R не удалось создать.
-121--842806-Существует возможность записи фактических запросов SQL, которые Hibernate может использовать для возврата сущностей. Таким образом, если вам действительно нужно, вы можете обойти HQL и записать именно тот запрос, который вы хотите с вашей GROUP BY в нем.
Для получения подробной информации см. здесь .
Например, в файле hbm.xml можно определить такой запрос:
<sql-query name="exampleQuery">
<query-param name="param" type="int"/>
<return alias="x" class="foo.bar.X"/>
<return alias="y" class="foo.bar.Y"/>
<![CDATA[
select {x.*}, {y.*}
from XEntity x
inner join YEntity y on y.xId = x.id
where y.value = :param
]]>
</sql-query>
Обратите внимание на {x. } и {y. } краткий синтаксис для выбора всех свойств объекта X и объекта Y