Grails GORM: konnte nicht initialisiert proxy - keine Sitzung
Ich habe eine Methode mit der folgenden Struktur:
public void run(){
...
for (...) { //this part works correct
User.withTransaction {
User user = User.findByUsername(...);
Position pos = Position.findByName(...)
if(pos){ ...
} else { ...
try{
pos.save(flush:true);
user.position = pos;
} catch (Exception e){ ... }
}
...
try{
user.save(flush:true, failOnError: true);
} catch (Exception e){ ... }
}
}
//this part doesn't work
User.findAll().each {
...
if (...){
User.withTransaction{
...
//here the operation fails with
//org.hibernate.LazyInitializationException:
//could not initialize proxy - no Session
if (!userDetailsMap.containsKey(it.username)
&& it.userStatus != blocked){
it.userStatus = blocked
it.save(flush:true)
}
}
}
}
}
Ausnahme, ich bin immer hier ist org.hibernate.LazyInitializationException: could not initialize proxy - no Session
im zweiten Teil von meinem code. Hier die userStatus
Feld ist ein Verweis auf eine andere domain-Klasse.
Habe ich versucht, hinzuzufügen it.refresh()
und Hibernate.initialize(it)
um den code, bevor Eigenschaften überprüft werden, aber keine Verwendung. Was mache ich hier falsch?
upd: ich habe versucht, rufen Sie die it.attach
- Methode, bevor die Eigenschaften überprüft werden, sondern direkt nach dem Aufruf der Methode den Wert von it.attached
ist false
.
Rufen Sie diese Methode in einer view?
Nein, diese Methode wird aufgerufen, durch einen scheduler. Eine Aufgabe Hinzugefügt wird, die ein scheduler die Aufrufe der
Nein, diese Methode wird aufgerufen, durch einen scheduler. Eine Aufgabe Hinzugefügt wird, die ein scheduler die Aufrufe der
run()
Methode.InformationsquelleAutor svz | 2013-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass du irgendetwas "falsch", es ist nur so, dass das Objekt bekam losgelöst von der hibernate-session. Ein paar Dinge, die ich versuchen würde:
it.attach()
Linie, aber ohne Erfolg. Versuchen Sie die zweite option.Was merkwürdig ist hier, dass direkt nach
it.attach()
heißt, dieit.attached
Wert false ist.Machen Sie den Zusammenhang zwischen domain-classes non-lazy schließlich dazu beigetragen, aber ich denke, das ist nicht die beste Lösung ist möglich. Dennoch ist es der einzige so weit.
Ich lief in das gleiche problem (siehe hier: stackoverflow.com/questions/15671456/...). Hatte, um die Beziehungen nicht faul, obwohl ich lieber
attach()
das Objekt...Ist das nicht wies in der Anleitung? grails.org/doc/latest/guide/...
InformationsquelleAutor zoran119
Hatte ich genau die gleiche Fehlermeldung, wenn ich mit der sub-domain-Klassen, in einer Klasse, wenn Ihre Größe der Daten mehr als eine Seite Größe, erhalten Sie den Fehler "- Meldung: konnte nicht initialisiert proxy - keine Session"
Durch die Verwendung von <> faul:false, hibernate werden die session-Anlage richtig funktioniert und erhalten die entsprechenden Daten angezeigt.
Danke für diesen Beitrag. Ich war in der Lage zu lösen, mein Fehler.
InformationsquelleAutor Makarand Kulkarni
Thomas Farvour schon in die richtige Richtung. Die docs, 13.1.1 Transaktionen ein Rollback, und die Sitzung, schlagen gerne-abholen der Kinder die optimale Lösung.
InformationsquelleAutor Doris Gammenthaler