Grails GORM如何确保相关对象属性的唯一性
我正试图了解GORM和关系映射。两人的关系很好,但有一个问题。我似乎无法确保添加到Grails GORM如何确保相关对象属性的唯一性,grails,gorm,unique,one-to-many,Grails,Gorm,Unique,One To Many,我正试图了解GORM和关系映射。两人的关系很好,但有一个问题。我似乎无法确保添加到邮件列表的每个邮件地址都有一个唯一的地址。要做到这一点,最有效的方法是什么 注意:对MailAddress.address没有唯一的约束。同一个表中可以存在相同的地址 class MailAddress { String name String email static belongsTo = MailingList static constraints = {
邮件列表
的每个邮件地址都有一个唯一的地址。要做到这一点,最有效的方法是什么
注意:对MailAddress.address
没有唯一的约束。同一个表中可以存在相同的地址
class MailAddress {
String name
String email
static belongsTo = MailingList
static constraints = {
name blank:true
email email:true, blank:false
}
}
class MailingList {
String name
static hasMany = [addresses:MailAddress]
static mapping = {
addresses cascade: 'all-delete-orphan'
}
static constraints = {
name blank:false
}
}
您可以添加一个唯一的约束:
static constraints = {
name blank:true
email email:true, blank:false, unique: true
}
=>对电子邮件变量设置唯一约束(unique:true)。这将阻止在表中保存相同的电子邮件地址。如@ibaraf的评论中所述,答案是自定义验证程序。
MailingList
类需要验证所有地址(maildAddress
)是否具有唯一的电子邮件地址
我将这个约束添加到MailingList
类中,它起了作用
static constraints = {
name blank:false
addresses(validator: {
if (!it) {
// validates to TRUE if the collection is empty
// prevents NULL exception
return true
}
// Grab a collection with all e-mailaddresses in the list
def addressCollection = it*.email
// Compare to a collection with only unique addresses
return addressCollection == addressCollection.unique()
})
}
更多信息可在此处找到这就是问题所在。当前表允许复制我目前无法更改的内容。我只想在邮件列表中的地址之间实现唯一性如果我理解正确,您希望在hasMany关联之间实现唯一性。如果是这样的话,你可以看看这个答案,谢谢你提到这个帖子!!我几天前读过,但它让我头疼,因为提供的示例不起作用。所以我回到了医生那里,找到了答案。谢谢你的帮助。