从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
,没有任何进一步的信息。。