hibernate - тип возвращаемого запроса - PullRequest
0 голосов
/ 14 июня 2011

У меня (относительно) простой HQL-запрос, который возвращает две соединенные сущности, имеющие отношение один ко многим. В результате запроса я хочу получить список типа entity1, где сопоставлен entity1.entity2. Поскольку в результирующем наборе я получаю декартово произведение, где для каждой сущности 2 (стороны множества) у меня есть 1 строка, я получаю дубликаты сущности 1. Таким образом, если я перечислю () результат, я получу повторяющиеся записи.

Для решения этой проблемы я использую query.setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY );

Однако, это не всегда возвращает список rntity1, но иногда список entity2.

Есть ли способ указать "основную" сущность ResultSet?

1 Ответ

1 голос
/ 14 июня 2011

Ваш второй запрос просит вернуть и сообщения, и команды, поэтому вы получаете оба типа объектов.Просто верните сообщение.

Вы должны быть в состоянии переместить желаемое WITH в предложение WHERE

SELECT msg FROM Messages AS msg LEFT JOIN FETCH msg.commands AS cmd WHERE( lower( cmd.status ) = 'failed' )
...