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
调用总是被缓存(至少在一级缓存中)。
我有两个具有多对多关系的 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
调用总是被缓存(至少在一级缓存中)。