解决grails2.3以后set和list属性修改时错误

如果domain中定义了set或者list,自动生成代码时,修改domain值,set或者list会重复添加(set抛错),解决办法:


在controller的update方法中,加入以下代码:


    @Transactional

    def update(ShiroRole shiroRole) {

        if (shiroRole == null) {

            notFound()

            return

        }


        if (params.users) {

            shiroRole.users = null

            shiroRole.properties = params

        }

        。。。。


先将users的值清空,检查有没有users属性,然后用properties方法重新赋值


这是domain属性:

class ShiroRole {

    String name


    static hasMany = [users: ShiroUser]


    static constraints = {

        name(nullable: false, blank: false, unique: true)

    }

}

你可能感兴趣的:(return,update,null,domain)