Grails GORM具有多对多属性

时间:2012-09-20 10:40:33

标签: grails gorm

我有两个域类:

class A {
    int id
    static hasMany = [bs: B]
}

class B {
    int id
}

我可以使用GORM查找与给定ID的B实例相关的所有A实例吗? 我试过了:

A.findAllByBs(B.get(bid))

但是我收到以下错误:

Class: java.sql.SQLException
Message: No value specified for parameter 1

1 个答案:

答案 0 :(得分:2)

来自Gorm文档

查询关联

通过使节点与属性名称匹配,可以查询关联。例如,假设Account类有许多Transaction对象:

class Account {
   …
   static hasMany = [transactions: Transaction]
   …
}

我们可以使用属性名称事务作为构建器节点来查询此关联:

def c = Account.createCriteria()
def now = new Date()
def results = c.list {
    transactions {
        between('date', now - 10, now)
    }
}

上述代码将查找在过去10天内执行过交易的所有帐户实例。您还可以在逻辑块中嵌套此类关联查询:

def c = Account.createCriteria()
def now = new Date()
def results = c.list {
    or {
        between('created', now - 10, now)
        transactions {
            between('date', now - 10, now)
        }
    }
}

所以这应该有效:

def c = A.createCriteria()
def results = c.list {
    bs {
        // Conditions...
    }
}

希望它有助于或提供任何关于如何遵循的提示。