grails - 如何在Groovy/Grails中正确保存对域对象的更新

标签 grails groovy persistence gorm

我开始接触组织的Groovy / Grails后端,并负责更新User域对象上的Document。问题是,在从前端命中了具有附加正确参数的更新端点后,后端将使用不变的Document对象进行响应。

这是代码:

 if (requestParams.userEmail) {
    def contact = User.findByEmail(requestParams.userEmail)
    log.debug('Reading user found by passed email contact={} error={}',contact, contact.errors.allErrors.inspect())

    if (!contact) {
       response.status = 400
       render WebserviceError.badInput as JSON
       return
    }

    document.user = contact
    document.user.save(flush: true)
 }
 document.save(flush: true)
 render survey as JSON

前端返回一个Promise,并且我正在记录Promise响应,它显示了一个具有相同附加用户的不变Document对象。我没有收到400,因此看来已成功找到联系人。

我尝试将flush:true添加到user.save调用和document.save调用中,但这没有帮助。

我的代码中有明显的错误行为吗?

最佳答案

好的db操作应该使用@Transactional在服务中,而不是在 Controller 中,最好是gorm版本而不是spring版本。您不需要使用flush:true。然后从服务中返回您可以返回到 Controller 并以JSON形式呈现的服务。

关于grails - 如何在Groovy/Grails中正确保存对域对象的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55766387/

相关文章:

javascript - 将自定义 URL 映射分配给 JavaScript 变量

带有 gradle 4.x 的 Grails 3.3.x 不起作用?

spring - 在测试时在 Grails 中注册替代/模拟服务实现?

java - Hibernate 自引用实体作为非空列

hibernate - ORA-01400 : Cannot insert null into (TABLE. 列)( hibernate )

grails - Grails中的视频播放器

exception - Grails 2.4.4 : How to reliably rollback in a complex service method

amazon-web-services - JMeter 脚本中的 S3 访问

java - 如何将 int 值与多个字符串值进行比较。所以它适用于数据库。值(value)转化失败

java - 如何访问H2数据库的*.mv.db文件?