gpt4 book ai didi

hibernate - 不能在grails中添加一对多关系- hibernate lazyInitializationException

转载 作者:行者123 更新时间:2023-12-02 15:30:20 24 4
gpt4 key购买 nike

我正在使用Grails应用程序,该应用程序在用户和任务之间具有一对多的关系。创建任务时,会出现错误:

类[class app.Task]的属性[user]不能为null或
无法延迟初始化角色集合:app.User.tasks,没有 session 或 session 被关闭

我能够在 bootstrap 中成功将任务保存给用户,但是无法在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)
}

最佳答案

直接使用存储在Http Session中的对象通常不是一个好主意。我将执行以下操作:

def save() {
def user = User.get(session.user.id)
// or
def user = session.user.merge() // not 100% this would work right

... all your other code

}

原因是用户已从休眠 session 中分离出来,并且您需要一个休眠 session 才能使所有持久性和GORM功能正常工作。

关于hibernate - 不能在grails中添加一对多关系- hibernate lazyInitializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com