私はこれが何度も尋ねられたことを知っており、私が見つけた解決策のほとんどを読んだり試したりしました。しかし、私の問題に対する正確な解決策が見つかりません。それらのほとんどは save() を呼び出していますが、私はリストを取得しているだけです。これは groovy/grails にあります。
このコードが一部で実行されると、「コレクションの遅延初期化に失敗しました。セッションまたはセッションが閉じられませんでした」というエラーが発生しますreturn caseVisualImpairmentCauses
。値が含まれている場合、 「オブジェクトは保存されていない一時インスタンスを参照しています - フラッシュする前に一時インスタンスを保存しcaseVisualImpairmentCauses
てください」というエラーが返されます。
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)
このエラーが発生する理由は何ですか?