Grails - 仅引用id的关联

时间:2014-06-22 13:33:09

标签: grails domain-driven-design

我正在尝试将域驱动设计应用到我的应用程序中,并且为了限制聚合根之间的深度遍历,建议是仅使用他们的身份来关联它们。假设我有以下域类,

class Person {

  Integer age

  String name

}

和PhoneBill

class PhoneBill {

  // reference to Person
  Long accountHolderId

  BigDecimal amount

}

实际上,此设置已经可以正常工作。但是,我想将外键约束添加到accountHolderId只是为了确保设置的任何值已经存在于数据存储中。官方的Grails文档似乎并没有涵盖这一点。

1 个答案:

答案 0 :(得分:0)

假设您的Person对象仍有ID,则可以添加custom validator,如果id无效,则会返回错误。

class PhoneBill {

  // reference to Person
  Long accountHolderId

  BigDecimal amount

    static constraints = {
        accountHolderId validator: { 
            !Person.exists(it) ?: 'your.custom.error.message.key'
        }
    }
}

请注意,.exists()仅适用于Grails 2.3.x.我相信。如果您使用的是旧版本,也可以同时拨打.get()