我正在尝试创建2个域类User
和MailBox
每个Mailbox
将有2 User
,其中一个sent
,另一个inbox
。
我尝试了多种解决方法:
1 - (因映射异常而失败)
Mailbox {
}
User {
static hasOne=[inbox:Mailbox, sent:Mailbox]
}
2 - (完全正常,直到我尝试使用它,然后sent
的值始终变为null
)
Mailbox {
static belongsTo = [user: User]
}
User {
Mailbox inbox
Mailbox sent
}
3 - (当我尝试通过以下方式创建新用户时:new User(inbox: new Mailbox(), sent: new Mailbox()).save()
它失败了)
Mailbox {
static belongsTo = [user: User]
}
User {
static mappedBy = [inbox: 'id', sent: 'id']
Mailbox inbox
Mailbox sent
}
创建这种关系的正确方法是什么?
答案 0 :(得分:0)
双向关联只能从一个属性映射到另一个属性,您不能将属性映射到多个属性:
class Mailbox {
static belongsTo = [user: User]
static mappedBy = [user: 'one']
}
class User {
Mailbox inbox
Mailbox sent
static constraints = {
inbox(nullable: true)
sent(nullable: true)
}
}
答案 1 :(得分:0)
如何为邮箱设置基类?基类可以具有所有邮箱属性。子类可以暂时为空,如果您在进一步开发应用程序时发现需要收件箱或发送框特定属性,则可以填写这些类。
这应该有用。
class InboxMailBox extends MailBox {
static belongsTo = [user: User]
}
class SentMailBox extends MailBox {
static belongsTo = [user: User]
}
class User {
InboxMailBox inbox
SentMailBox sent
}