我一直在努力解决这个错误一个星期了,而且我正在认真地对此失去理智!我已经尝试了multible的实现和解决方法,并且还没有做什么,但是我只是将它保存为另一个异常。Grails:从后台线程访问GORM
我使用的执行人插件运行asynchroniously的方法:
runAsync{
run(...)
}
的方法最初删除一些对象:
page.delete(flush:true)
再后来可能重新创建这些对象:
def page = new Page(type : Page.TYPE_TABLE, domain : domainVersion.domain, identifier : tableName)
page.save(flush: true, failOnError: true)
但是,以下例外情况会失败:
Caused by: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.ramboll.egs.ohs.domain.Domain#1]
的Page
Domain
和之间的关系可以简单地通过具有Domain
属性Page
实现。否hasMany
og belongsTo
- 由于性能问题,我在之前的帖子中对此感到气馁。
我想我已经尝试过的save
,merge
,withTransachtion
和PersistenceContextInterceptor
所有可以想象的组合...
这是如何工作的?请举例。
在此先感谢!
它是如何失败?请显示一些不只是伪代码的代码。 –
你确定第一行保存了吗?检查它是否返回null,表示违反约束。还要考虑'save(flush:true,failOnError:true)',如果无效,抛出异常 –