Grails save方法返回null

时间:2013-05-30 17:59:02

标签: grails gorm

我一直用Grails中的格式化数据库保存实体...

def jim = new User(name: "Jim",
                emailAddress: "jim@hotmail.com",
                backOfficeUser: false,
                dateCreated: Instant.now(),
                lastUpdated: Instant.now(),
                passwordHash: BCrypt.hashpw("secret123", BCrypt.gensalt())).save(flush: true)

这一切似乎都工作正常,直到导致.save()和save(flush:true)的东西返回null。如果我将声明更改为此,则可以正常工作......

    def jim = new User(name: "Jim",
            emailAddress: "jim@hotmail.com",
            backOfficeUser: false,
            dateCreated: Instant.now(),
            lastUpdated: Instant.now(),
            passwordHash: BCrypt.hashpw("secret123", BCrypt.gensalt()))
            jim.save(flush:true)

然后,Jim实例会立即拥有数据库序列发出的id,并在调用save时保持不变。

2 个答案:

答案 0 :(得分:4)

在grails中,如果save成功,则保存返回已保存的实例,否则返回null。请参阅save reference说明部分。添加failOnError: true以检查验证是否失败

答案 1 :(得分:1)

事实证明,当我们遇到数据库供应商在高负载(Percona)下可能遇到的特定死锁异常时,团队中的另一个开发人员已经覆盖了save方法以重试。

在这个新的保存方法中,我们不再返回实例。