编写标准来模仿连接查询grails

时间:2014-06-24 09:49:29

标签: grails

我正在使用grails 2.2.4并希望编写可能生成SQL的标准,如:

select r.value from group g, rating r where r.groupId = g.id and g.name = ?

如果我们有以下域名结构:

class Group {
    String name
}

class Rating {
    Long groupId
    int value
}

如何使用grails标准编写此内容?

我写的是这样的:

def result = Rating.withCriteria {
    projections {
        property("value")
    }
    eq "groupId", new DetachedCriteria(Group).build {
        projections {
            property("id")
        }
        eq("name", "Group A")
    }
}

但是由此,hibernate正在生成子查询。有什么猜测吗?

1 个答案:

答案 0 :(得分:1)

您应该将域结构更改为面向对象。使用关联:[http://grails.org/doc/2.2.4/guide/GORM.html#gormAssociation]

您的代码将如下所示:

class Group {
    String name
}

class Rating {
    Group group
    int value
}

您的条件查询可以与此类似:

Rating.withCriteria {
    createAlias('group', '_group')
    eq('_group.name', 'Group A')
    projections {
        property('value')
    }
}