0

我正在尝试创建 2 个域类UserMailBox

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   
}

建立这种关系的正确方法是什么?

4

2 回答 2

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)
    }
}
于 2012-09-23T10:39:56.913 回答
0

为邮箱创建一个基类怎么样?基类可以具有所有邮箱属性。子类现在可以为空,如果您在进一步开发应用程序时发现需要收件箱发送箱特定属性,则可以填写。

这应该有效。

class InboxMailBox extends MailBox {
    static belongsTo = [user: User]
}

class SentMailBox extends MailBox {
    static belongsTo = [user: User]
}

class User {
    InboxMailBox inbox
    SentMailBox sent
}
于 2012-09-24T02:28:58.977 回答