我在事件处理程序方法中获取会话时遇到问题。 Grails版本:3.0.11
所以,代码本身:
class FooController {
def notifyFoo(Long id) {
notify('Foo:foo', id)
sendSuccessMessage(message(code: 'Message.Text.Success'))
}
}
@Consumer
class BarService {
static transactional = false
@Selector('Foo:foo')
@Transactional
def onFoo(Long fooId) {
Baz baz = Baz.findByFooId(fooId)
baz.bazProp++
**baz.save()** /*Here i get the error about 'No session found'*/
}
}
我尝试过不同的方法来处理这个问题:
在任何情况下我都会得到同样的错误: org.hibernate.HibernateException:找不到当前线程的会话
任何人都可以帮我解决我的问题吗?我做错了什么?
答案 0 :(得分:1)
您不应将static transactional = false
和@Transactional
合并到同一服务中 - 使用其中一种:
static transactional = false
static transactional = true
在Grails 3.X中,不推荐使用静态注释,因此只应使用注释。