【发布时间】:2017-11-23 19:55:13
【问题描述】:
我有一个用 Grails 服务编写的方法,它处理大量数据。
我注意到,有时该方法返回成功,但数据并未持久化到数据库中。
我调试了它,跟踪所有数据直到方法结束,一切都很好,但是数据没有持久化。
下图演示了我刚才解释的内容。您可以看到该方法的结尾,其中一个 Map 对象填充了持久对象元数据。甚至你可以看到包含 printend Hibertate SQL 的控制台
方法返回成功后如何检测是否抛出回滚机制?
这是我的 Oracle 12c 数据库的连接属性。其他配置是 Grails 的默认配置
dataSource.pooled=true
hibernate.jdbc.use_get_generated_keys=true
hibernate.cache.use_second_level_cache=true
hibernate.cache.use_query_cache=false
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
dataSource.driverClassName=oracle.jdbc.driver.OracleDriver
dataSource.dialect=org.hibernate.dialect.OracleDialect
dataSource.url=jdbc:oracle:thin:@172.16.1.20:1521:db
dataSource.username=<USER>
dataSource.password=<PASS>
hibernate.default_schema=<SCHEMA>
服务被注释为@Transactional
@Transactional
class SincronizacionService {
}
有什么想法吗?
【问题讨论】:
-
我只是编辑了问题标题,所以也许对它有更好的理解
-
可能使用您的 setup 您必须手动调用事务的提交。你能分享你的休眠配置吗?您使用的是哪个事务管理器?你在哪个环境?
-
代码属于 Grails 应用程序。我用我的自定义配置编辑了这个问题。这发生在所有环境中 [发展 |测试 |生产]。该服务也使用 @Transactional 注释
-
请提供序列或代码示例以重新生成问题。
-
你检查事务范围内没有RuntimeException吗?
标签: grails transactions grails-orm