Hibernate: Найти только те строки, которые не находятся в отношениях «многие ко многим» - PullRequest
1 голос
/ 07 апреля 2011

Хорошо, я сопоставил с аннотациями две таблицы с двунаправленным отношением @ManyToMany.

Теперь я хочу вернуть только те элементы, которые не имеют отношения многие ко многим, и я пытаюсьиспользуйте код из здесь , но он генерирует исключение во время выполнения.Вот HQL:

String hql = "select a from Article a " +
                "left join a.tags t " +
                "group by a " +
                "having count(t)=0";

Есть ли лучший способ вернуть эти элементы?Или исправить ошибку в этом запросе?

Исключение, которое он выдает сейчас:

column "article0_.id" must appear in the GROUP BY clause or be used in an aggregate function

org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL ...

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Запрос правильный, но в некоторых базах данных group by a недостаточно, вам нужно перечислить все свойства a, например group by a.id, a.title.

В качестве альтернативы вы можете использовать следующий запрос:

select a from Article a where a.tags is empty

Смотри также:

1 голос
/ 07 апреля 2011

Не уверен, что это сработает, но вы можете попробовать:

String hql = "select a from Article a " +
                "where a.tags=null ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...