我正在尝试将Map属性添加到用户域
class User {
String id
String username
String password
....
Map<String, Follower> followers
//i've tried also without embeded and got the same error. also tried follower insead of followers
static embedded = ['followers']
}
class Follower {
String name
List<String> interests
}
我有一个宁静的控制器,实现了save方法
@Transactional
@Secured(['permitAll'])
def save(User user){
user.id = new ObjectId().encodeAsBase64()
user = user.insert(flush: true)
respond
}
可悲的是我遇到了一个例外:
java.lang.IllegalStateException: Cannot convert value of type [com.google.gson.JsonObject] to required type [Follower] for property 'followers[532dbe3b8fef86ebe3e64789]': no matching editors or conversion strategy found Around line 26 ofUserController.groovy
第26行是:user = user.insert(flush:true)
示例json请求:
{
username : "roy",
password : "123456",
followers : {
"532dbe3b8fef86ebe3e64789" : {
name : "Roy",
interests : ["math"]
}
}
}
任何帮助将不胜感激
谢谢!
罗伊
您正在尝试将JSONObject的对象保存为Follower实例。解决此问题的直接方法是将其手动转换为Follower实例:
def save(User user){
user.id = new ObjectId().encodeAsBase64()
user.followers = user.followers.collect{ new Follower( it ) }
user = user.insert(flush: true)
respond
}
如果您遇到更多此类情况,则应注册一个属性编辑器以进行转换JSON <-> Follower
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句