我正在使用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正在生成子查询。有什么猜测吗?
答案 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')
}
}