Grails и MySQL пакетная обработка - PullRequest
1 голос
/ 06 августа 2010

Я пытаюсь реализовать совет, найденный в этом великолепном сообщении в блоге для пакетной обработки в Grails с MySQL .Проблема, с которой я сталкиваюсь, заключается в том, что включение периодических вызовов session.clear () в мой цикл вызывает исключение org.hibernate.LazyInitializationException.В разделе комментариев на странице внизу есть цитата:

Вы второй пункт о том, что причиной ЛЖВ является абсолютная правда.Если вы занимаетесь чем-то другим, кроме импорта с текущим потоком, вам понадобится повторно присоединить любые объекты к сеансу после очистки.

Но как мне это сделать?сделай это?Может ли кто-нибудь помочь мне конкретно понять, как «присоединить какие-либо объекты к сеансу после того, как я закончил очистку?»

Я также заинтересован в распараллеливании процесса вставки базы данных, чтобы я мог воспользоваться многоядернымпроцессор. Кто-нибудь может дать совет, как это сделать в Grails?

1 Ответ

1 голос
/ 06 августа 2010

У Grails есть несколько способов помочь с этим (они используют спящий режим под одеялом).

Если вы знаете, что объект отсоединен, вы можете использовать метод attach для его повторного подключения.

Если вы внесли изменения в объект, пока он был отсоединен, вы можете использовать merge .

Если по какой-либо причине вы не уверены, что объект прикреплен к сеансу, вы можете использовать метод текст ссылки , чтобы узнать, является ли он или нет.

Возможно, стоит ознакомиться с документацией по Hibernate на Session .

...