Я пытаюсь выполнить совет, найденный в this great blog post for batch processing in grails with MySQL. Проблема, с которой я сталкиваюсь, заключается в том, что включение периодических вызовов в session.clear() в моем цикле вызывает org.hibernate.LazyInitializationException. В разделе комментариев есть цитата:grails и mysql пакетная обработка
Вы второй вопрос о потенциально , вызывающий LIE, абсолютно верно. Если вы делаете другие вещи за пределами , импортируя с текущей нитью, , вы обязательно захотите повторно подключить к любым объектам сессии после , вы делаете свою очистку.
Но как это сделать? Может ли кто-нибудь помочь мне конкретно понять, как «повторно подключить какие-либо объекты к сеансу после того, как я закончил очистку?»
Я также заинтересован в параллелизации процесса вставки базы данных, чтобы я мог использовать многоядерный процессор. может кто-нибудь давать рекомендации о том, как сделать это в Grails?
благодарит за ответ. Есть ли у вас какие-либо советы о том, как я могу определить, какие объекты нужно повторно привязать? – vicatcu
@vicatu, к сожалению, это зависит от решения, это зависит от того, какие объекты вы могли бы отключить во время clear(). Другая вещь, которую вы могли бы попробовать, заключается в том, что вместо того, чтобы выполнять очистку сеанса грубой силы, вы могли бы выселить определенные объекты домена, с которыми вы работаете в сеансе. Еще одна вещь, которую я не пробовал, - это новый метод «withNewSession» в GORM (http://www.grails.org/doc/latest/ref/Domain%20Classes/withNewSession.html). Это было не во время, когда я писал сообщение первоначально, но может быть лучшим способом для переноса транзакции и очистки после. –