我有两个域类:
class Book {
String name
static hasMany = [articles: Article]
}
class Article {
String name
static belongsTo = [book: Book]
}
我想证明一本书在文章名称属性方面确实只有独特的文章。换句话说:同一本书中不得有同名文章。
我该如何确保?
最佳答案
您可以使用Book
类上的自定义验证程序来执行此操作(请参阅documentation)。
可能的实现如下所示:
static constraints = {
articles validator: { articles, obj ->
Set names = new HashSet()
for (Article article in articles) {
if (!names.add(article.name)) {
return false
}
}
return true
}
}
在此示例中,我使用
java.util.Set
检查重复的名称(如果两次添加相同的名称,则Set.add()
返回false
)。您可以使用
myBookInstance.validate()
触发对象的验证。
关于grails - 如何设置基于hasMany关系的唯一类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377182/