【问题标题】:How to save a domain with a hasMany property in gorm-hibernate如何在 gorm-hibernate 中使用 hasMany 属性保存域
【发布时间】:2019-04-24 17:24:30
【问题描述】:

我有一个具有 hasMany UserRoles 的用户,但是当我尝试保存用户和 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)]

【问题讨论】:

标签: hibernate grails grails-orm relationship


【解决方案1】:

你的 fct addToRoles() 输入错误

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多