从Grails中的m:n关系加载域实例

从Grails中的m:n关系加载域实例,grails,groovy,model,Grails,Groovy,Model,背景: 考虑以下模型: 地图可以位于一个或多个地图集中 地图集必须包含一个或多个地图 我将其建模如下: def maps = Map.createCriteria().list(max: params.max, offset: params.offset, sort: params.sort, order: params.order) { } Map.groovy: static belongsTo = [ User, Mapset ] static hasMany = [ mapsets

背景:

考虑以下模型:

  • 地图可以位于一个或多个地图集中
  • 地图集必须包含一个或多个地图
我将其建模如下:

def maps = Map.createCriteria().list(max: params.max, offset: params.offset, sort: params.sort, order: params.order) { }
Map.groovy

static belongsTo = [ User, Mapset ]
static hasMany = [ mapsets : Mapset ]
static hasMany = [ maps : Map ]
Mapset.groovy

static belongsTo = [ User, Mapset ]
static hasMany = [ mapsets : Mapset ]
static hasMany = [ maps : Map ]

问题:

我在地图控制器中,有一个名为
set
的参数,它指定了我要从中加载地图的集合

通常,我的地图控制器会加载地图并在分页视图中显示它们,如下所示:

def maps = Map.createCriteria().list(max: params.max, offset: params.offset, sort: params.sort, order: params.order) { }
但是为了更具选择性,我只想得到属于一个地图集的地图

问题:

如何仅加载属于id为1的地图集的地图?不过我需要分页参数

我想我可以这样做:

Mapset.get(params.set).maps
那又怎样呢?

[更新]

def maps = Map.createCriteria().list(max: params.max, offset: params.offset, sort: params.sort, order: params.order){
   mapsets {
       eq('id', params.set)
   }
}

不起作用:
找不到类[Map]
的名称[mapset]的属性-因为一个映射可以属于多个集。如何访问映射的映射集?尽量在belongsTo语句中更具体一些(static belongsTo=[user:user,mapset:Mapet]).Hm。。当我这样做时,应用程序甚至不再运行:
在多对多关系中的域类[class Mapset]和[class Map]之间没有定义所有者。
很抱歉,现在我知道了。我已经更新了我的答案,但是我目前还没有一个Grails设置,所以我不能100%相信它会像预期的那样工作。谢谢你的更新!然而,现在它变得神秘起来:
执行控制器[MapController]的操作[browse]导致异常:java.lang.String
,没有任何进一步的信息。。