Grails:条件构建器中嵌套关联的问题

Mr.*_*r.B 4 grails hibernate criteria grails-orm hibernate-criteria

我对标准构建器有一个令人沮丧的问题.我有一个应用程序,其中一个用户有一个日历,日历有许多条目.看起来很简单,但是当我尝试获取给定用户的日历条目时,我无法访问用户属性(MissingMethodException).这是代码:

def getEntries(User user) {
  def entries = [ClassName].createCriteria().list() {
    calendar {
      user {
        eq("id", user.id)
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过以下变化:

def getEntries(User user) {
  def entries = [ClassName].createCriteria().list() {
    calendar {
      eq("user", user)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这没有引起异常,但也没有起作用.

这是域类的相关部分:

class Calendar {
    static belongsTo = [user: User]
    static hasMany = [entries: Entries]

    ...
}

class User {
    Calendar calendar

    ...
}

class Entry {
    static belongsTo = [calendar: Calendar]

    ...
}
Run Code Online (Sandbox Code Playgroud)

谷歌搜索时我遇到了2008年初发现的类似问题:http: //jira.codehaus.org/browse/GRAILS-1412

但根据这个链接,这个问题早就应该解决了.

我究竟做错了什么?

Mr.*_*r.B 10

我终于找到了错误!! 该错误与标准构建器完全无关.在这种情况下的问题是我在范围内有用户变量,所以当我尝试输入用户关系时

calendar {
  user {
    eq("id", user.id)
  }
}
Run Code Online (Sandbox Code Playgroud)

Grails认为我想用一个闭包来调用用户对象/变量.我可以再次自由地使用标准构建者:-)

感谢您的帮助和建议!