我正在一個grails應用程序,具有用戶和任務之間的一對多關係。當我創建一個任務時,我得到一個錯誤:不能添加到一對多的關係在休眠lazyInitializationException
class [class app.Task]類的屬性[user]不能爲null或 無法懶惰地初始化一個角色集合:app.User.tasks,no session或會話已關閉
我能夠在引導程序中成功地將任務保存到用戶,但無法在TaskController中這樣做。
我敢肯定,我有一行代碼錯了,想知道它是什麼。我的代碼如下。
def save() {
def taskInstance = new Task(params)
println "attempting to save ${session.user.toString()}"
println "adding task to user"
def tasks = session.user.getTasks()
println "got tasks"
println "adding task to user"
session.user.addToTasks(taskInstance) <--error here
println "task added successfully"
if (!taskInstance.save(flush:true)) {
println "task saved and flushed"
render (view: "create", model: [taskInstance: taskInstance])
return
}
flash.message = message(code:'default.created.message',
args: [message(code: 'task.label', default: "Task"), taskInstance.id])
redirect(action:"show", id:taskInstance.id)
}
其實,再次查看您的示例控制器代碼,什麼是session.user?它是你的用戶域的實際實例嗎?這似乎很奇怪...通常你會攜帶user.id沒有綁定的實例。 –
session.user是一個用戶域對象,我在登錄時設置了它。將它更改爲session.user = loggendInUser.id更好嗎? –