我知道这已经被问过很多次了,我已经阅读/尝试了我能找到的大多数解决方案。但是我找不到解决我问题的确切方法。他们中的大多数都在调用save(),但是我只得到列表。这在常规/粗俗中。

return caseVisualImpairmentCauses部分执行此代码时,发生错误“无法延迟初始化集合,没有 session 或 session 被关闭”。当caseVisualImpairmentCauses包含值时,它返回错误“对象引用了一个未保存的 transient 实例-在刷新之前保存该 transient 实例”。

def List<CaseVisualImpairmentCause> bindVisualImpairmentCause(Long visualImpairmentPrimaryCauseId, ArrayList caseVisualImpairmentCausesList, 
    String visualImpairmentOtherCause) { 
    def caseVisualImpairmentCauses = [] 
 
    if (visualImpairmentPrimaryCauseId) { 
        def visualImpairmentPrimaryCauseInstance = VisualImpairmentCause.get(visualImpairmentPrimaryCauseId) 
        CaseVisualImpairmentCause caseVisualImpairmentPrimaryCause = new CaseVisualImpairmentCause(visualImpairmentCauseIdvisualImpairmentCause: visualImpairmentPrimaryCauseInstance) 
        caseVisualImpairmentPrimaryCause.isPrimary = true 
        caseVisualImpairmentCauses << caseVisualImpairmentPrimaryCause 
    } 
    caseVisualImpairmentCausesList.each { 
        VisualImpairmentCause visualImpairmentCause = VisualImpairmentCause.get(it as Integer) 
        CaseVisualImpairmentCause caseVisualImpairmentCause = new CaseVisualImpairmentCause(visualImpairmentCauseIdvisualImpairmentCause: visualImpairmentCause) 
        if (it.equals('5')) { 
            caseVisualImpairmentCause.caseVisualImpairmentCauseOther = visualImpairmentOtherCause 
        } 
        caseVisualImpairmentCauses.add(caseVisualImpairmentCause) 
    } 
    return caseVisualImpairmentCauses 
} 

那个叫
    obpCaseInstance.visualImpairmentCauses = caseService.bindVisualImpairmentCause(visualImpairmentPrimaryCauseId, listOfCaseVisualImpairmentCauses, visualImpairmentOtherCause) 

知道为什么会发生此错误吗?

请您参考如下方法:

我可以通过将所有findbyId()、. get()和getbyId()更改为.read()来解决此问题。看来方法(查找,获取)已经在刷新并且与调用.save()一样好。我还取出了从另一服务调用的获取数据(无法使用.read()之类的方法,如findBYOtherproperty替换)的所有方法,并将其放在同一方法中。这使错误消失,而无需我强制在离开服务之前先保存对象。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!