如何在gorm-hibernate中使用hasMany属性保存域

时间:2019-04-24 07:34:50

标签: hibernate grails gorm relationship

我有一个具有hasMany UserRoles的用户,但是当我尝试保存一个User和addToRole时,保存期间出现验证错误,我无法理解原因。

class User ... {

static hasMany = [roles:UserRoles]


}

那我有一个域UserRoles

class UserRoles ... {

 Roles role 
 static  belongsTo = [user: User]


    UserRoles(Role r){
        role = r
    }


 }

角色域如下所示

 class Role ... {


 String name

    Role(String name) {
        this.name = authority
    }


 }

现在当我尝试保存用户时

我有这样的代码

Role r = findRole()
user.addToRoles(roles: new UserRole(r))
user.save(flush:true, failOnError: true)

但返回错误

Field error in object 'com.api.v1.User' on field 'roles': rejected value [[Ljava.lang.String;@5871447d]; codes [com.api.v1.User.roles.typeMismatch.error,com.api.v1.User.roles.typeMismatch,user.roles.typeMismatch.error,user.roles.typeMismatch,typeMismatch.com.api.v1.User.roles,typeMismatch.roles,typeMismatch.java.util.Set,typeMismatch]; arguments [roles]; default message [Could not find matching constructor for: com.api.v1.UserRoles(java.lang.String)]

1 个答案:

答案 0 :(得分:0)

您输入的fct addToRoles()输入错误

Role r = findRole()
--//user.addToRoles(roles: new User(r))
//++
user.addToRoles(roles: r)
user.save(flush:true, failOnError: true)