【发布时间】:2011-12-01 20:27:18
【问题描述】:
Grails 1.3.7
我们有一个合并 2 个用户的服务方法。由于数据量很大,因此需要进行很多操作,因此需要进行大量读取,更新和写入。我们在服务中有 transactional=true。我知道 Grails 的默认 FlushMode 是 AUTO。我理解该错误消息的含义。
但是,它不会在本地发生,也不会在我们的暂存环境中发生。所有这些都以相同的权限运行相同版本的 MySQL(密码除外)。
我知道我可以更改默认的 FlushMode 行为,但我很犹豫,因为我无法在生产环境之外的任何环境中复制该行为。现在我只是想知道是否有什么可能导致这种情况实际上与 FlushMode 无关?
逐字错误消息是:
org.springframework.dao.InvalidDataAccessApiUsageException:写 只读模式下不允许操作(FlushMode.MANUAL):转 您的会话进入 FlushMode.COMMIT/AUTO 或删除“只读”标记 来自事务定义。
【问题讨论】:
-
你能显示一些代码和/或错误信息吗?
-
由于敏感的客户信息,我无法在不进行大量清理的情况下显示代码。我会解决这个问题,但我已经编辑了我的问题以包含错误消息,这与问题基本相同。
-
Gregg - 您是否配置了使用:只读的二级缓存?出于某种原因,我想我已经看到了类似的情况,我试图修改一个我配置了只读缓存的域对象。
标签: grails service transactions spring-transactions