2010-01-07 20 views
1

我需要能够查找表中每个项目的id不在关系映射表中的表中的所有项目。换句话说,我有一张表,每行都有一个id。如果该ID在地图表中,则不应显示在我的列表中。带关联的Grails查询 - 查找表中所有id不在另一个表中的表

我想查询我的映射表,对所有的ID中,然后转身和查询我的主表排除有ID的任何物品......所以像的:

SELECT * FROM主要哪里ID不在(从地图选择main_id);

有没有一种很好的方法来通过findBy方法或可能的条件构建器查询使用grails来完成此操作?

回答

6

如果您在使用Hibernate,你应该能够做到这一点与HQL,使用not in和子查询(here's a page of examples):

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

基于this page,我相信你需要执行这个查询在Main.findAll方法:

def results = Main.findAll("from Main as main where main.id not in (select map.main_id from Map as map)") 
+0

我以为我之前做过,它不会正常工作。我显然是在做错事,因为这确实有效。谢谢。 – intargc 2010-01-07 17:05:26

相关问题