对只读对象产生未保存的瞬时实例错误

时间:2019-06-07 19:36:09

标签: grails gorm

我偶然发现了一个通过重构解决的问题,但是对于刷新会话时grails如何尝试持久化某些东西,我有些不太了解。问题是这样的:

 a method returned an existing record as read only

another method checked if action was necessary:
     create new related instance
     add existing record to new instance hasMany association

     call a validate service method on the new instance
         a cross service call is transactional. this triggers a flush
             ERROR-> object references unsaved transient instance- the newly created instance

我修复了流程,但是我不完全理解为什么此时任何一个对象都试图保存。

新实例尚未与会话上下文关联。 现有记录是只读的,因此也不应尝试保存。

该服务未在任何一个对象上调用save-它正在执行一些触发的操作,但未直接在这两个记录上进行。

我希望有必要显式调用newInstance.save()或session.setReadOnly(existing,false),以便会话刷新可以对这两个记录中的任何一个进行操作。有什么可能导致只读在后台被忽略吗?

0 个答案:

没有答案