【发布时间】: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)]
【问题讨论】:
-
您的问题是什么?该错误是由
UserRole类中缺少构造函数引起的 - 就像错误所说的那样。我猜,该错误是由您的非空构造函数引起的。按照gorm.grails.org/latest/hibernate/manual/index.html#basicCRUD 中的建议使用地图构造函数
标签: hibernate grails grails-orm relationship