Domanda

Sto cercando di implementare il consigli che si trovano in questo grande post del blog per l'elaborazione batch in Grails con MySQL . Il problema che sto avendo è che l'inclusione di inviti periodici a Session.clear () nel mio circuito provoca org.hibernate.LazyInitializationException di essere gettato. C'è una citazione in basso nella sezione commenti della pagina:

  

Sei secondo punto su potenzialmente   causando bugie è assolutamente vero. Se   si sta facendo altre cose al di fuori di   importazione al thread corrente,   si vorrà fare in modo di ricollegare   oggetti per la sessione dopo   stai facendo il tuo compensazione.

Ma come posso fare? Qualcuno può aiutarmi a capire come specificamente a "riattaccare tutti gli oggetti per la sessione dopo che sono compensazione fatto?

Sto interessati anche a parallelizzare il processo di inserimento dati in modo che possa prendere vantaggio di avere un processore multicore. Qualcuno può fornire consigli su come farlo in Grails?

È stato utile?

Soluzione

Grails ha un paio di metodi per aiutare con questo (si leva ibernazione sotto le coperte).

Se si conosce un oggetto è indipendente, è possibile utilizzare il allegare metodo per ricollegarlo.

Se hai apportato modifiche all'oggetto mentre era distaccato, è possibile utilizzare merge .

Se per qualsiasi motivo, non siete sicuri se un oggetto è collegato alla sessione, è possibile utilizzare il metodo link testuale per scoprire se si è o non è.

Potrebbe anche essere la pena di rivedere la documentazione di Hibernate su sessione .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top