【发布时间】:2015-03-11 17:49:39
【问题描述】:
我正在尝试将项目从 Grails 2.3.7 升级到 2.4.3,但许多页面都给出了错误:
没有数据存储会话绑定到线程,并且配置不允许 在这里创建非事务性的
我更改的唯一配置是 BuildConfig.groovy 的插件部分。我错过了什么吗?
我在 Oracle 11 中使用 Hibernate 3.6.10.16 插件。
更新:它似乎与从 gsp 运行查询有关。这是一个适用于 2.3.7 的模拟示例。
<g:set var="allBooks" value="${Books.createCriteria().listDistinct { }}" />
错误评估表达式 [Books.createCriteria().listDistinct { }] on 第 [1] 行:没有数据存储会话绑定到线程,并且配置确实如此 不允许在这里创建非事务性的
【问题讨论】:
-
你试过hibernate4插件吗? Grails 2.4.3 有很多更新说明可能与您的问题有关(例如:“对于尚未从 Hibernate 3 插件升级的应用程序,建议将 Hibernate OSIVI 刷新模式设置为“手动””等) .无论如何,我建议将查询从视图移动到服务中。控制器调用服务,并填充传递给视图的模型。
-
我尝试过 hibernate4,但我们使用 Oracle Label Security 并且我们的解决方案依赖于 hibernate3,所以这是另一个问题。我们的设计是模板驱动的,每个模板(视图)获取它需要的所有数据。这使我们可以灵活地将模板放在我们想要的任何地方。除了正确性之外,将所有模板转换为服务需要一些努力,尽管我们的服务运行良好......我希望快速修复以恢复旧行为。 :) 看起来我的选择是将所有视图查询移动到控制器/服务中,或者让 hibernate4 与 OLS 一起工作。
标签: grails