如何在executeQuery()中选择hasMany列

时间:2019-02-08 23:16:20

标签: java hibernate grails

我有一个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中从休眠/网格返回对象的正确方法是什么?

0 个答案:

没有答案