gpt4 book ai didi

hibernate - 尝试从 shell 使用 grails 域类

转载 作者:行者123 更新时间:2023-12-02 14:13:51 27 4
gpt4 key购买 nike

我是 Grails 的新手。

我正在尝试从 shell 中使用我的 grails 域,但我无法让它工作。当我运行应用程序时,这些域在脚手架代码中运行良好。

给定这个域类

class IncomingCall {

String caller_id
Date call_time
int call_length

static constraints = {
}
}

我尝试创建一个“IncomingCall”并从 shell 中保存它。无论我做什么,我总是得到“空”;该对象未创建。

如果我尝试创建对象然后保存,我会收到“没有绑定(bind)到线程的 hibernate session ”错误(见下文)。
groovy:000> new IncomingCall(caller_id:'555-1212', call_time: new Date(), call_length:10).save()
ERROR org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
at org.springframework.orm.hibernate3.SpringSessionContext.currentSession (SpringSessionContext.java:63)
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession (SessionFactoryImpl.java:574)
at groovysh_evaluate.run (groovysh_evaluate:3)
...
groovy:000>

我怎样才能从 shell 中完成这项工作?

最佳答案

我也遇到了这个非常烦人的问题。

要修复它,请在 shell 中运行此代码以将 hibernate session 绑定(bind)到事务同步管理器:

import org.hibernate.Session
import org.hibernate.SessionFactory
import org.springframework.orm.hibernate3.SessionFactoryUtils
import org.springframework.orm.hibernate3.SessionHolder
import org.springframework.transaction.support.TransactionSynchronizationManager
sessionFactory = ctx.getBean("sessionFactory")
session = SessionFactoryUtils.getSession(sessionFactory, true)
TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session))

完成后,域对象应该按预期工作。

关于hibernate - 尝试从 shell 使用 grails 域类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361067/

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