计算grails中多对多关系中的关系

时间:2014-11-02 06:47:06

标签: grails many-to-many

我在grails域类中有很多关系。

class Book {

   static hasMany = [tags:Tag]

   static mapping = {
   }

   static constraints = {
   }

   static transients = []

   String bookTitle
}

class Tag {

   static hasMany = [books:book]
   static belongsTo = [Book]

   static mapping ={
   }
   static constraints = {
   }

   String name  
}

我想添加一个瞬态,如果一本书有任何标签,它就会存储。

有什么办法吗?例如,

 def hasAnyRelation

最终,我需要创建一个标准,显示已标记/未标记的图书。

2 个答案:

答案 0 :(得分:0)

创建这种类型的关系真是糟糕的grails设计。不要以两种方式将多对多的关系联系起来。您可以创建属于书籍或许多书籍的标签。但书并不需要知道这种关系。如果要查询已标记的书籍,只需查询标记即可。如果您担心性能,可以随时缓存结果。

答案 1 :(得分:0)

尝试createCriteriasize限制,例如

标记书籍

Book.createCriteria.list() { 
    sizeGe("tags", 1)
} 

用于未标记的图书

Book.createCriteria.list() { 
    sizeEq("tags", 0)
}