1

我想从我的数据库中获取与给定项目相关的所有需求(在本例中为 currentProject)我刚刚使用了两种方法来做到这一点

第一 :

Requirement.withCriteria {....
    eq("project", currentProject)
    ...
}

我注意到这个查询没有使用 Project 类的 equals 方法,但是这个查询返回了我想要的。

第二

Requirement.withCriteria {
    ....        
    currentProject == property('Project')
    ...
}

此查询使用 equals 方法比较两个项目,但我无法覆盖抛出异常的 equals 方法,说“grails 无法将 hibernateBuild 转换为域”

所以,我想知道这两个查询有什么区别?

谢谢大家!

4

1 回答 1

2

withCriteria方法转到数据库以获取您的实体。

在数据库级别上没有equals的概念(DB对Java一无所知)。第一个查询会为您提供正确的结果,因为它比较了 DB 映射(PRIMARY / FOREIGN 键)。

至于第二个查询 - 我不建议使用它。如果它使用equals,当它将所有项目从数据库中提取到内存中时。这是一个非常糟糕的主意。

于 2013-05-21T08:16:48.333 回答