2013-03-05 5 views
1

Я знаю, что это было задано много раз, и я прочитал/попробовал большинство решений, которые когда-либо найду. Но я не могу найти точное решение моей проблемы. Большинство из них вызывает 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) 

любая идея, почему происходит эта ошибка?

+0

Где вы называете этот метод? –

+0

, потому что я хочу получить список нарушений зрения, которые уже находятся в db, и нарушения зрения, которые пользователь проверил перед тем, как покинуть/направлять страницу. На главной странице есть несколько перенаправлений (для добавления клиента, для добавления контакта), и мне нужно поддерживать данные в этом процессе. это в веб-потоке. – user742102

+0

любых пользовательских getters/setters в ваших классах домена? – uchamp

ответ

2

Я смог решить это, изменив все findbyId(), .get() и getbyId() в .read(). Похоже, что методы (find, get) уже смываются и так же хороши, как и вызов .save(). Я также извлек все методы извлечения данных (методы, которые не могут быть заменены на .read(), такие как findBYOtherproperty), вызываемые из другой службы, и вместо этого помещают их в один и тот же метод. Это заставило ошибку уйти без меня, чтобы сначала сохранить объект, прежде чем покинуть службу.

Смежные вопросы

 Смежные вопросы