hibernate - Grails:标准构建器中的嵌套关​​联问题

标签 hibernate grails criteria gorm hibernate-criteria

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

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

我什至尝试了以下变体:
def getEntries(User user) {
  def entries = [ClassName].createCriteria().list() {
    calendar {
      eq("user", user)
    }
  }
}

这并没有引发异常,但也不起作用。

以下是域类的相关部分:
class Calendar {
    static belongsTo = [user: User]
    static hasMany = [entries: Entries]

    ...
}

class User {
    Calendar calendar

    ...
}

class Entry {
    static belongsTo = [calendar: Calendar]

    ...
}

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

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

我究竟做错了什么?

最佳答案

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

calendar {
  user {
    eq("id", user.id)
  }
}

Grails 认为我想用闭包调用用户对象/变量。我可以再次自由使用标准构建器:-)

感谢大家的帮助和建议!

关于hibernate - Grails:标准构建器中的嵌套关​​联问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453312/

相关文章:

java - JPA 条件返回页面和总计

java - JPA 选择不同计数

hibernate OneToMany 列表排序持续但反转?

Grails 3 - 更改运行应用程序的默认端口

java - Hibernate - 如何使用仅指定单向子关系的注释级联删除

json - 将 JSON 请求数据绑定(bind)到命令对象

unit-testing - 如何在grails 2.2.4中模拟 Controller 中的私有(private)方法

grails - 使用Grails条件获得一个属性的不同结果

java - 使用mybatis将对象直接持久化到db

java - 如何在 JPA 中映射名称为保留字的实体字段