我有一个HQL查询,必须对其进行修改以获取在Grails域类上定义的hasMany变量。
这是我要做的事情的简化:
假设我们有两个域类,即A和B:
Class A {
String attribute1
int attribute2
...
...
...
static hasMany = [someHasManyAttribute: B] //Has many to class B
}
然后可以说我运行了
A.executeQuery("select a from A a")
这将返回一个包含A类中所有属性的对象,该对象还包含我想要的setsomeHasManyAttribute属性。
但是,我所有仅选择someHasManyAttribute的尝试都失败了。我不需要对象将A的所有属性,我只需要选择几个即可。这是一个问题,因为我也在select语句中调用了一个构造函数,所以我需要获取确切的属性。
我尝试了几件事,例如:
A.executeQuery("select whatIWant, a.attribute1 from A a inner join a.someHasManyAttribute whatIWant")
这使我获得了无效的标识符错误。 另一个例子:
A.executeQuery("select a.someHasManyAttribute from A a")
在这种情况下,我会丢失表达式,因为休眠似乎为该属性生成了SQL,看起来像“。as col”
在包含hasMany属性的HQL中从休眠/网格返回对象的正确方法是什么?