Select 加入查询 table - GORM

Select query on join table - GORM

我有两个具有多对多关系的 tables Agency 和 Catalog,并按如下方式加入 table。

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): []

我加入 table agat 看起来像这样-

agency_id|catalog_id
2              3
3              1
3              2
4              4

有什么帮助吗?

就在那里,无需查询:

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

请注意,我使用的是 get 而不是 findById。它们基本上是相同的 SQL 查询,但是 findById 是一个动态查找器并且默认情况下不使用缓存,并且如果使用缓存则非常悲观地使用它(即它被清除了很多)而 get 调用总是被缓存(至少在一级缓存中)。