Pergunta

Estou tentando implementar os conselhos encontrados em Este ótimo post para o processamento em lote em Grails com MySQL. O problema que estou tendo é a inclusão de chamadas periódicas para session.clear () no meu loop causar org.hibernate.lazyinitializationException's a ser jogado. Há uma cotação na seção de comentários da página:

Você é o segundo ponto sobre a possibilidade de causar mentiras é absolutamente verdadeira. Se você estiver fazendo outras coisas fora de importação com o tópico atual, verifique se você recolhendo todos os objetos para a sessão depois de fazer sua limpeza.

Mas como faço isso? Alguém pode me ajudar a entender especificamente como "recolocar algum objetivo para a sessão depois que terminar a limpeza?

Também estou interessado em paralelamente o processo de inserção do banco de dados, para que eu possa tirar proveito de ter um processador multi -núcleo. Alguém pode fornecer conselhos sobre como fazer isso em Grails?

Foi útil?

Solução

O Grails tem alguns métodos para ajudar com isso (eles aproveitam a hiberna sob as cobertas).

Se você sabe que um objeto está destacado, você pode usar o anexar Método para reconectá -lo.

Se você fez alterações no objeto enquanto ele foi detectado, você pode usar mesclar.

Se por qualquer motivo, você não tem certeza se um objeto está anexado à sessão, você pode usar o Texto do link Método para descobrir se é ou não.

Também pode valer a pena revisar a documentação do hibernato sobre Sessão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top