我在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
最终,我需要创建一个标准,显示已标记/未标记的图书。
答案 0 :(得分:0)
创建这种类型的关系真是糟糕的grails设计。不要以两种方式将多对多的关系联系起来。您可以创建属于书籍或许多书籍的标签。但书并不需要知道这种关系。如果要查询已标记的书籍,只需查询标记即可。如果您担心性能,可以随时缓存结果。
答案 1 :(得分:0)
尝试createCriteria的size
限制,例如
标记书籍
Book.createCriteria.list() {
sizeGe("tags", 1)
}
用于未标记的图书
Book.createCriteria.list() {
sizeEq("tags", 0)
}