Domanda

Dove sono i luoghi più comuni in cui hai ottenuto un org.hibernate.LazyInitializationException in Grails, qual è stata la causa e come ha fatto a risolverlo?

Credo che questa unica eccezione viene su molto per il novizio, quindi se si desidera fornire più esempi, sarebbe bello.

È stato utile?

Soluzione

Consente di prendere un esempio:

class Book {
  String title
  Author author
}

class Author {
  ...
}

Book book = Book.get(1)

Come sappiamo, la modalità predefinita è pigro prendere in classi di dominio. Considerando l'esempio di cui sopra, diciamo si ottiene l'oggetto libro, poi libro oggetto viene collegato all'oggetto sessione di Hibernate cioè cache di primo livello automaticamente. E dopo che l'oggetto del dominio si stacca dall'oggetto sessione e quindi cerchiamo di prendere book.author, in questo momento si solleva l'eccezione di inizializzazione pigro.

Quindi la soluzione è, di avere entrambe le modalità prendere ansioso 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. Ci potrebbero essere molti di più. Chiedo ad altri di si prega di condividere.

Altri suggerimenti

ho ottenuto uno perché stavo controllando se un utente ha avuto il permesso di fare qualche azione con JSecurity / Shiro in un servizio che non è stato transazionale. Alla fine ho dovuto impostare il servizio come transazionale per sbarazzarsi di eccezione.

Più informazioni su: http : //www.nabble.com/JSecurity-LazyInitializationException-in-default-DbRealm.isPermitted%28%29-td24939803.html

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