2013-05-04 70 views
0

我有兩個領域類:如何設置唯一hasMany關係的基類屬性?

class Book { 
    String name 

    static hasMany = [articles: Article] 
} 


class Article { 
    String name 

    static belongsTo = [book: Book] 
} 

我想驗證書確實有文章name屬性方面只有獨特的快速舉報通道。換句話說:在同一本書中不能有同名的文章。 我如何確保?

回答

1

您可以使用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()觸發驗證對象。