如果我的域类中没有链接字段,如何使用grails中的条件加入表

Але*_*тин 4 grails criteria grails-orm

我在域模型中有两个类:

class Project {
   String name
   Integer fund
}

class Task {
   String name
   Integer weight
   Project project
}
Run Code Online (Sandbox Code Playgroud)

如何使用Task.name =“ something”获得Project?

如果我需要Project.name =“ something”的Task,可以通过createAlias使用条件来完成,但是如何加入Task

c = Project.createCriteria()
   criteriaRes = c.list {
}
Run Code Online (Sandbox Code Playgroud)

Bur*_*ith 5

我不确定这是否会有所帮助,但是我在SQL方面做了很多工作,因此当我想出如何创建条件或在哪里查询时,我首先在HQL中进行操作,因为它类似于SQL。如果您不打算使用NoSQL数据库,那么HQL是一个不错的选择,但是条件和查询可以在GORM实现之间移植。

因此,执行您想要的HQL查询是

def projects = Task.executeQuery(
   'select t.project from Task t where t.name=:taskName',
   [taskName: 'something'])
Run Code Online (Sandbox Code Playgroud)

一个类似的条件查询将是

def projects = Task.createCriteria().list {
   eq 'name', 'something'
   projections {
      property 'project'
   }
}
Run Code Online (Sandbox Code Playgroud)