Frage

Wo sind die häufigsten Orte, wo man eine org.hibernate.LazyInitializationException in Grails bekommen haben, was die Ursache war und wie du es getan hast lösen?

Ich denke, das eine Ausnahme viel für Anfänger kommt, also wenn Sie mehr Beispiele geben würde, wäre es toll.

War es hilfreich?

Lösung

Nehmen wir ein Beispiel:

class Book {
  String title
  Author author
}

class Author {
  ...
}

Book book = Book.get(1)

Wie wir wissen, holen Standardmodus ist in Domain-Klassen faul. In Anbetracht der obigen Beispiel, sagen wir, das Buch-Objekt bekommen, dann wird Buch Objekt in die Hibernate-Session-Objekt d.h ersten Level-Cache automatisch angebracht. Und nachdem das Domäne-Objekt aus dem Sitzungsobjekt abgelöst wird und dann versuchen wir book.author zu holen, in diesem Moment es die faulen Initialisierung Ausnahme auslöst.

So ist die Lösung ist, haben entweder Fetch-Modus wie eifrig oder Ihr Buch Objekt befestigen Sie den Code in den Ruhezustand Sitzung mit unten angegeben:

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

Die oben angegebene Beschreibung ist eine der Szenario. Es könnte viel mehr sein. Ich bitte andere Aktien zu gefallen.

Andere Tipps

Ich habe, weil ich war die Überprüfung, ob ein Benutzer die Erlaubnis hatte, eine Aktion mit JSecurity / Shiro in einem Dienst zu tun, die nicht transaktionale war. Am Ende nur habe ich den Dienst als Transaktions einzustellen loswerden die Ausnahme zu erhalten.

Weitere Informationen hier: http : //www.nabble.com/JSecurity-LazyInitializationException-in-default-DbRealm.isPermitted%28%29-td24939803.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top