【发布时间】:2014-06-18 20:45:00
【问题描述】:
在 Grails 中“从头开始”(用代码而不是表单)创建对象时遇到问题。以下是控制器(评估)中方法的代码 sn-p。
def newVol = new Vol(
volType:type,
app: assessmentInstance.app,
assessment:assessmentInstance,
dateFound: assessmentInstance.assDate,
urlParam: url,
volName: "TEST",
volNote: "TEST"
)
newVol.save(validate:false,flush:true, failOnError:true)
结果是这个错误:
Class
org.postgresql.util.PSQLException
Message
ERROR: cannot execute nextval() in a read-only transaction
id 映射到 Vol 类中的生成器:
static mapping = {
id column:'vol_id'
id generator: 'sequence',params:[sequence:'scan_sequence']
}
我真的不明白如何将保存视为只读事务。我尝试在我的域类上弄乱@transactional 设置,首先将readOnly 设置为false,然后删除@transactional,但它并没有改变任何事情。看起来我应该寻找使用数据库序列的替代方法。你怎么看?
更新 从上面代码所在的控制器中删除了 readonly=true 并且该代码有效。但是......移除它有什么副作用?
【问题讨论】:
标签: grails