【问题标题】:When would you use the new dynamic GORM methods findOrSaveBy/Where?你什么时候会使用新的动态 GORM 方法 findOrSaveBy/Where?
【发布时间】:2012-02-28 22:10:35
【问题描述】:

我正在试验 Grails 2.0.1 并阅读了文档,但对新的动态方法感到困惑:

def book = Book.findOrSaveWhere(author: 'Daniel Suarez', title: 'Daemon')
def book = Book.findOrSaveByAuthorAndTitle('Daniel Suarez', 'Daemon')

我可以想象findOrCreateBy/Where 可能会派上用场的某些情况,但就我的一生而言,我想不出任何需要findOrSaveBy/Where 的情况。即使在test case on github 中,这种方法的动机对我来说也不是很明显。似乎在每个测试用例中,您显然想要find 或显然想要save,所以拥有findOrSave 只会使代码的意图不太清楚。

The original JIRA entry 这些功能没有讨论动机或提供任何背景。有人可以给我一些这些方法有益的场景吗?

【问题讨论】:

    标签: grails grails-orm grails-2.0


    【解决方案1】:

    findOrCreateWhere - User.findOrCreateWhere(login: 'bala'),这将在数据库中找到一个登录为bala的用户。如果找不到,它将创建一个新对象但不会保存它。您必须明确保存它。

    findOrSaveWhere - User.findOrSaveWhere(login: ‘bala’),这将在数据库中找到一个登录为bala的用户。如果找不到,它将创建一个新对象并将其保存。

    希望对您有所帮助。

    【讨论】:

    • 我一定已经在文档中阅读了该部分五次,但由于某种原因它没有点击。有道理,谢谢你的信息。
    • 我可以在findOrSaveByField() 中添加应保存的其他属性吗?即我可以通过 ID 查找,如果不匹配,保存名称、电子邮件、城市等?
    • @Pila 你知道了吗?
    • 没有@Dracarys。我必须进行查询,然后是条件。如果查询返回一些结果,那么我不保存新实例,否则,使用您的属性创建一个新实例。
    猜你喜欢
    • 2012-08-14
    • 2010-09-19
    • 2012-04-23
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多