Grails “在我的域类对象上保存”不起作用。

Grails “在我的域类对象上保存”不起作用。,grails,groovy,Grails,Groovy,我有一个用户类,它有一个列表字段,即pt。当用户注册其帐户时,此字段未初始化。但当用户执行此控制器操作时: def updatePt() { //performs some action def user = User.get(springSecurityService.principal.id) //find the user user.pt = [] //on certain conditions i put values i

我有一个用户类,它有一个列表字段,即pt。当用户注册其帐户时,此字段未初始化。但当用户执行此控制器操作时:

def updatePt() { 
       //performs some action 
       def user = User.get(springSecurityService.principal.id)  //find the user 
       user.pt = [] 
       //on certain conditions i put values into user.pt like this 
       user.pt << "E" 
       //at last I save it 
       user.save() 
} 
def updatePt(){
//执行一些操作
def user=user.get(springSecurityService.principal.id)//查找用户
user.pt=[]
//在某些条件下,我像这样将值放入user.pt

user.pt可能是由于验证错误。请尝试

if (!user.save()) {
   log.error('User not saved')
   user.errors.each {
       log.error('User error: $it')
   }
}

PS或您可以使用
println
而不是
log.error

您必须在Users域类中提供静态映射,以便Grails知道必须持久化字段:

class User {
    static hasMany = [pt: String]
}

我已经使用了这些技术,我想这不是因为验证错误!我在使用这种技术时得到了
错误grails.validation.ValidationErrors:0错误
这一点..pt字段是你映射的一部分吗?@bunting:mapping?你能更清楚一点吗?我是grails世界的新手..实际上
pt
是我的
列表
User
domain类。在映射
pt
之前,我没有做任何事情!也许我误解了,但您不想持久化用户对象吗?用户对象持久化,但pt字段不持久化,对吗?如果是,您提供了静态映射,static hasMany=[pt:String]?没错……pt字段没有被持久化!事实上,正如我在问题中提到的,用户已经被创建了,但当时pt字段还没有被使用或初始化。所以在这个控制器操作中,我需要用他/她的新pt值更新我的用户。@bunting:到目前为止,我还没有做任何与映射相关的事情。我只是给出了
Li我的
用户
域类中的st pt