grails - 如何设置基于hasMany关系的唯一类属性?

标签 grails gorm database-schema grails-2.0 grails-domain-class

我有两个域类:

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/

相关文章:

oracle - Grails 3无法解析类oracle.sql

json - Grails-渲染的Json文件太大,无法进行客户端操作

grails - 为什么在第一次访问hasMany关系时grails抛出空指针异常?

用于个性化用户访问每个站点的 MySQL 结构?

MySQL 查询以获取所有(其他)症状和疾病

database - 在数据库表中存储样本数组

grails - GrailsApplicationAware 的使用

html - 如何在Grails中显示最终的显示页面范围?

grails - GORM hasMany使用多个列

spring - Spring Boot框架需要Spring安全管理控制台