我想从我的数据库中获取与给定项目相关的所有要求(在本例中为currentProject) 我刚用两种方法来做这件事
第一个:
Requirement.withCriteria {....
eq("project", currentProject)
...
}
我注意到这个查询不使用Project类的equals方法,但是这个查询正确地返回了我想要的内容。
第二
Requirement.withCriteria {
....
currentProject == property('Project')
...
}
此查询使用equals方法来比较两个项目,但我无法覆盖equals方法,即抛出异常,说“grails无法将hibernateBuild强制转换为域”
所以,我想知道这两个查询之间的区别是什么?
感谢所有人!
答案 0 :(得分:2)
withCriteria
方法进入数据库以获取您的实体。
在数据库级别上没有equals的概念(DB对Java没有任何了解)。第一个查询为您提供了正确的结果,因为它比较了DB映射(PRIMARY / FOREIGN键)。
至于第二个查询 - 我不建议使用它。如果它使用equals,则它将所有项目从DB提取到内存中。这是一个非常糟糕的主意。