升级到Grails 3.3后验证错误

时间:2018-03-23 06:51:20

标签: grails spring-security gorm

我有一个Grails应用程序,我从Grails 3.2.8升级到Grails 3.3.3。我使用Spring安全插件,并有一个编辑用户角色的页面。

在用户角色更新过程中,我首先删除所有角色,然后添加所选角色。这适用于Grails 3.2.8,但是使用Grails 3.3.3我在添加所选角色期间获得了org.grails.datastore.mapping.validation.ValidationErrors(现有角色错误),当页面呈现完成时,所有角色都消失了(因为删除所有角色但由于现有角色错误而未添加新角色)

这是因为新的冲洗行为吗?任何帮助,将不胜感激。

@Transactional
def updatepermission(User userInstance) {
    if (userInstance == null) {
        notFound()
        return
    }
    UserRole.removeAll(userInstance)
    params.authorities.each { roleId ->
    UserRole.create(userInstance, Role.get(roleId))
    }
    springSecurityService.clearCachedRequestmaps()
    request.withFormat {
        form multipartForm {
            flash.message = message(code: 'default.updated.message', args: [message(code: 'user.label', default: 'User'), userInstance.id])
            redirect(controller: "user", action: "permission", id: userInstance.id)
            return //new ModelAndView("/user/info/"+userInstance.id, [userInstance: userInstance])
        }
        '*' { respond userInstance, [status: OK] }
    }
}

UserRole类是Spring安全性生成的类,给出错误的方法是:

static UserRole create(User user, Role role, boolean flush = false) {
    def instance = new UserRole(user: user, role: role)
    instance.save(flush: flush)
    instance
}

Grails 3.3.3 with hibernate-core.5.1.5.Final。错误是:

  

引起:org.springframework.dao.DuplicateKeyException:具有相同标识符值的另一个对象已与会话关联:

0 个答案:

没有答案