2009-09-02 9 views
9

Dove sono i luoghi più comuni in cui hai ottenuto uno org.hibernate.LazyInitializationException in Grails, qual è stata la causa e come l'hai risolta?Eccezione di inizializzazione pigra di Grails e Hibernate

Penso che questa eccezione risulti molto utile per i principianti, quindi se fornissi più esempi, sarebbe fantastico.

risposta

10

consente di dare un esempio:

class Book { 
    String title 
    Author author 
} 

class Author { 
    ... 
} 

Book book = Book.get(1) 

Come sappiamo, di default recuperare la modalità è pigro in classi di dominio. Considerando l'esempio precedente, diciamo che otteniamo l'oggetto book, quindi l'oggetto Book viene collegato automaticamente all'oggetto di sessione di ibernazione cioè la cache di primo livello. E dopo che l'oggetto dominio viene staccato dall'oggetto sessione e quindi proviamo a recuperare book.author, al momento solleva l'eccezione di inizializzazione Lazy.

Quindi la soluzione è, per avere sia in modalità Visualizza come ansiosi o collegare l'oggetto libro in letargo sessione utilizzando il codice indicato di seguito:

if(!book.isAttached()){ 
    book.attach() 
} 

La descrizione di cui sopra è uno dello scenario. Ce ne potrebbero essere molti di più. Chiedo ad altri di compiacere la condivisione.

+1

Questo funziona per me davvero bene, ma è noioso posizionarlo ovunque sia necessario! – IgniteCoders

+0

@IgniteCoders Amit non sembra attivo in SO. Sai quali sono le cause e gli oggetti da staccare in una sessione? –

+0

@AlexanderSuraphel Davvero non lo so. Lo metto solo quando sorge un'eccezione da qualche parte – IgniteCoders

Problemi correlati