我在域模型中有两个类:
class Project {
String name
Integer fund
}
class Task {
String name
Integer weight
Project project
}
如何使用Task.name="something"获取Project?
如果我需要Project.name="something"的Task,我可以通过createAlias根据条件来完成,但我如何在中加入Task
c = Project.createCriteria()
criteriaRes = c.list {
}
我不确定这是否有帮助,但我在SQL方面做了很多工作,所以当我被困在如何创建条件或在哪里进行查询时,我会首先在HQL中进行,因为它与SQL相似。如果您不打算使用NoSQL数据库,HQL是一个不错的选择,但条件和查询在GORM实现中是可移植的。
因此,一个HQL查询可以满足您的需求,它就是
def projects = Task.executeQuery(
'select t.project from Task t where t.name=:taskName',
[taskName: 'something'])
然后,一个分析标准查询将是
def projects = Task.createCriteria().list {
eq 'name', 'something'
projections {
property 'project'
}
}
除了Burt的答案之外,我认为您还需要(或应该将其作为最佳实践)正确定义的两个域类之间的关系:
class Project {
String name
Integer fund
static hasMany = [tasks: Task]
}
class Task {
String name
Integer weight
static belongsTo = [project: Project]
}