在连接表上选择查询 - GORM

时间:2015-01-22 18:04:14

标签: grails gorm

我有两个表代理和目录,具有多对多关系和连接表,如下所示。

class Agency{
   static hasMany = [catalogs: Catalog]
   static mapping={
    catalogs: joinTable:[name 'agcat']
   }
}

class Catalog{
   String catalog_name    
   static hasMany = [agencies: Agency]
   static belongsTo = Agency

   static mapping={
    agencies: joinTable:[name 'agcat']
   }
}

我想获取给定Agency.id = 3的目录列表(在我的情况下,目录1和2)我用下面的动态查找器尝试了这个但它给了我一行。

 Agency agency = Agency.findById(id)
 def catalog = agency ? Catalog.findAllById(agency.id): []

我的联盟表agat看起来像这样 -

agency_id|catalog_id
2              3
3              1
3              2
4              4

任何帮助?

1 个答案:

答案 0 :(得分:1)

它就在那里,不需要查询:

Agency agency = Agency.get(id)
def catalogs = agency?.catalogs ?: []

请注意,我使用get而不是findById。它们基本上是相同的SQL查询,但是findById是一个动态查找器,默认情况下不使用缓存,如果它确实使用它会非常悲观(即它被清除很多)而{ {1}}调用始终被缓存(至少在第一级缓存中)。