2

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

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

我可以想象一些findOrCreateBy/Where可能会派上用场的情况,但对于我的一生,我想不出任何需要的情况findOrSaveBy/Where。即使在github 上的测试用例中,这种方法的动机对我来说也不是很明显。似乎在每个测试用例中,您显然想要find或显然想要这样做,save所以findOrSave只是使代码的意图变得不那么清晰。

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

4

1 回答 1

4

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

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

希望有帮助。

于 2012-02-29T00:51:02.963 回答