你何时会使用新的动态GORM方法findOrSaveBy / Where?

时间:2012-02-28 22:10:35

标签: grails gorm grails-2.0

我正在尝试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这些功能不讨论动机或给出任何背景知识。有人可以给我一些这些方法有益的方案吗?

1 个答案:

答案 0 :(得分:4)

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

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

希望有所帮助。