Grails “在我的域类对象上保存”不起作用。
我有一个用户类,它有一个列表字段,即pt。当用户注册其帐户时,此字段未初始化。但当用户执行此控制器操作时: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
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
。