我有一个用户域类和一个列表。
每个列表必须有一个作者(用户),每个用户必须有一个“主列表”。只有部分列表具有“primaryList”法规。
所以..像
这样的东西User: List primaryList List: User author static belongsTo = User
当然这不符合预期,因为这两种关系被误认为只是一种。我还应该在User上添加一个hasMany,在List上添加其他的belongsTo,但是我不想让这个例子复杂化,因为我想从你那里得到正确答案。
答案 0 :(得分:3)
您可能需要使用mappedBy来解释用户和列表中的字段如何排列。以下是我编写的几个域,允许用户创作多个列表,但只设置一个为“主要”。有一些额外的可空约束,因此您可以使用scaffolded UI而无需进入鸡蛋和鸡蛋场景。
class User {
String name
FooList primaryList
static hasMany = [authoredLists: FooList]
static mappedBy = [primaryList: 'primaryOwner', authoredLists: 'author']
static constraints = {
primaryList nullable: true, unique: true
authoredLists nullable: true
}
String toString() { name }
}
我将此类命名为“FooList”只是为了避免与标准List类混淆:
class FooList {
static belongsTo = [author: User, primaryOwner: User]
static constraints = {
primaryOwner nullable: true, display: false
}
}
答案 1 :(得分:2)
尝试使用地图belongsTo方法:
static belongsTo = [user:User]
Grails应该将2个属性视为单独的。