Grails запрос с ассоциациями - найти все в таблице, где идентификатор не находится в другой таблице - PullRequest
1 голос
/ 07 января 2010

Мне нужно, чтобы я мог найти все элементы в таблице, где идентификатор каждого элемента отсутствует в таблице реляционного отображения. Другими словами, у меня есть одна таблица, в которой каждая строка имеет идентификатор. Если этот идентификатор находится в таблице карты, он не должен отображаться в моем списке.

Я думал о том, чтобы запросить в моей таблице карт все идентификаторы в ней, а затем развернуться и запросить мою главную таблицу, чтобы исключить любые элементы, имеющие этот идентификатор ...

выберите * из основного, где идентификатор не указан (выберите main_id на карте);

Есть ли хороший способ сделать это с помощью grails с помощью метода findBy или, возможно, запроса построителя критериев?

1 Ответ

6 голосов
/ 07 января 2010

Если вы используете Hibernate, вы сможете сделать это с HQL, используя not in и подзапрос (, вот страница примеров ):

from Main as main where main.id not in (select map.main_id from Map as map)

Исходя из этой страницы , я считаю, что вам нужно выполнить этот запрос в Main.findAll методе:

def results = Main.findAll("from Main as main where main.id not in (select map.main_id from Map as map)")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...