gpt4 book ai didi

hibernate - Grails 服务抛出异常 "org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow ..."

转载 作者:行者123 更新时间:2023-12-02 15:28:32 26 4
gpt4 key购买 nike

我有一个包含方法的 Grails 服务

@Transactional
def method(param1, param2, param3, param4) {
SomeClass obj = new SomeClass(param1: param1, param2: param2, param3: param3, param4: param4)
obj.save(flush:true, failOnError:true)
}

即使我提供了“failOnError”参数,该方法也会静默失败。这已经花了我一些时间来弄清楚,所以我将其更改为:
@Transactional
def method(param1, param2, param3, param4) {
try {
SomeClass obj = new SomeClass(param1: param1, param2: param2, param3: param3, param4: param4)
obj.save(flush:true, failOnError:true)
} catch (Throwable t) {
t.printStackTrace()
}
}

现在,最后,我看到错误消息:“No Hibernate Session bound to thread,并且配置不允许在此处创建非事务性 session ”。这很奇怪。我一直相信“@Transactional”会为我提供一个有效的 Hibernate session 。所以我在这里有点不知所措。有谁知道问题可能是什么?

最佳答案

使用 session.open()在访问数据库和 close 之前通过明确指定为一种解决方案。还有一个很好的答案细节是Here by Burt Beckwith.

如果有帮助,请使用他的示例。

void deviceDisconnected(String mobileId, String wifiIp){
try {
UserMobile.withTransaction { tx ->
def mobile = Mobile.findByMobileId(mobileId)
def userMobile = UserMobile.findByMobileAndWifiIp(mobile, wifiIp)
userMobile.action = Constants.MOBILE_STATUS_DISCONNECTED
userMobile.alarmStatus = Constants.ALARM_STATUS_TURNED_ON
userMobile.modifiedDate = new Date()
userMobile.save(flush: true)
}
}
catch(e) {
e.printStackTrace()
}
}

关于hibernate - Grails 服务抛出异常 "org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow ...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23990695/

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