我有以下情况,
Domain class A which hasMany B's
Domain class B which hasMany C's and belongsTo A
Domain class C which belongsTo B
Class E {
A a
B b
C c
}
Class C {
String name
}
我想查询E值,即获取一些E属性的列表,例如在这种情况下c.name基于用户在选择框中选择的值,即用户从多个选择框中选择A和B并基于此标准,获得名单。
换句话说,我想在c中找到满足a和b
设置条件的所有名称试图找出GORM查询无济于事。
感谢
答案 0 :(得分:0)
我通过使用原始SQL连接解决了这个问题。不确定这是否是最好的方式,但它对我有用。 我从A和B得到参数,即
def fromA = params.someCriteriaValueInA
def fromB = params.someCriteriaValueInB
请注意,这些是从gsp获取的。此外, fromB 值将使用链式选择基于 fromA 值加载。
在grails控制器/服务中......
def db = new Sql(dataSource)
def result = db.rows("your sql to go here")
然后你可以用结果做任何你想做的事情,例如在模板中操作它
render(template: "myResults", model:[result :result])
别忘了在控制器/服务中注入 dataSource bean,并进行必要的导入
import groovy.sql.Sql
请注意,这涉及到遍历许多域类实例,对于那些喜欢原始SQL的人来说,这似乎更容易。我们可以采用不同的方法,也许使用GORM的标准。