【问题标题】:Difference between eq and == in Grails withCriteria queryGrails withCriteria查询中eq和==的区别
【发布时间】:2013-05-21 07:58:44
【问题描述】:

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

第一个:

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

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

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

此查询使用 equals 方法比较两个项目,但我无法覆盖抛出异常“grails can't cast hibernateBuild to domain”的equals方法

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

谢谢大家!

【问题讨论】:

    标签: grails


    【解决方案1】:

    withCriteria 方法进入数据库以获取您的实体。

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

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

    【讨论】:

    • 想想你的解释
    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 2011-01-06
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2010-10-30
    相关资源
    最近更新 更多