Grails 如何解决在一个域中有2个belongsTo的问题

Grails 如何解决在一个域中有2个belongsTo的问题,grails,gorm,Grails,Gorm,我有以下域:用户、角色、公司。用户和角色具有m:n关系,公司对用户具有1:m关系,用户对公司具有1:1关系。我对用户域的定义有问题。这是: class User { static hasMany = [authorities: Role ] static belongsTo = [ Role , Company ] } 我想从一个用户访问该公司,以便User.company将向我提供分配给他的公司。不允许进行此修改: static belongsTo = [ Role , company:

我有以下域:用户、角色、公司。用户和角色具有m:n关系,公司对用户具有1:m关系,用户对公司具有1:1关系。我对用户域的定义有问题。这是:

class User {
 static hasMany = [authorities: Role ]
 static belongsTo = [ Role , Company ]
}
我想从一个用户访问该公司,以便User.company将向我提供分配给他的公司。不允许进行此修改:

static belongsTo = [ Role , company: Company ]
以下是错误:

Unexpected node type: EXPR found when expecting type: LABELED_ARG at line: 9 column: 41. File: /Users/alfred/Applications/grails_projects/extramile/grails-app/domain/fbm/extramile/User.groovy @ line 9, column 41.
请注意,也可以不这样做:

static belongsTo = [ role: Role , company: Company ]
因为用户角色有m:n(也已经由'authorities'变量指定)


还有其他解决办法吗?谢谢。

如果我理解正确,这应该可以:

class User {
    static hasMany = [authorities: Role ]
    static belongsTo = [ Role , Company ]
    Company company
}

我不禁想,你的用户属于一家公司而不是另一家公司是很奇怪的,即删除一家公司会删除该公司的所有用户。不管怎样,我不知道你的域名,所以我闭嘴

为什么你的用户类属于一个角色呢?我使用的是acegi插件,这就是他们的方法。我只是在为Useryes扩展模板域,这是我在发布问题后所做的,它确实按照我的计划工作。我应该再次回答我自己的问题,但昨天忘了回答:p但还是,谢谢你的时间:)顺便说一句,关于你对域名的关注,“belongsTo”就是这样工作的吗?我添加这一点是因为我想公开动态方法(addTo*和removeFrom*)。对于集合,您只需要addTo和removeFrom,这样GORM就可以处理引用和级联的设置。Grails文档更全面地解释了使用belongsTo的后果。