gpt4 book ai didi

hibernate - Grails CXF 插件和 GORM

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

我正在使用 CXF 插件版本 2.0.1,并在 SOAP 服务方法中简单地使用了 GORM。当我在服务上运行测试时,它会抛出一个异常,说它无法初始化代理,因为没有 session 。根据我所做的一些搜索,这是一个 hibernate 问题,我假设这意味着 GORM 尚未正确初始化。有人可以给我一个关于如何在端点类中手动初始化 GORM 的指针吗?

最佳答案

您习惯于在 Controller 操作(或从那里调用的方法)中进行 Hibernate 工作,并且那里总是有一个事件的 Hibernate Session,因为 Grails 使用 Open Session in View 模式,在请求开始时打开一个 session ,将其绑定(bind)在ThreadLocal,因此可以方便地访问它,然后在请求结束时刷新和关闭 session 。一些插件也这样做,例如 Quartz 插件使用作业启动/停止监听器来做同样的事情,因此您可以像在 Controller 中一样方便地在那里使用 GORM。

确保 session 在代码块期间打开的最简单方法是使用静态 withTransaction任何领域类的方法。它确实启动了一个事务,因此如果您进行数据库更新,您也会从中受益,但即使您只是阅读它也是可行的方法,因为 session 将打开,您将能够使用延迟加载的 1-many 和 many-many 引用。

事务/ session 与域类无关,因此随机选择一个并使用它:

User.withTransaction {

def games = Game.findAllByFooAndBar(foo, bar)
games.each { ... }
...
}

关于hibernate - Grails CXF 插件和 GORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747011/

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