Grails GORM: Proxy konnte nicht initialisiert werden - keine Sitzung
Ich habe eine Methode mit folgender 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)
}
}
}
}
}
Die Ausnahme, die ich hier bekomme, istorg.hibernate.LazyInitializationException: could not initialize proxy - no Session
im zweiten Teil meines Codes. Hier dieuserStatus
Feld ist ein Verweis auf eine andere Domänenklasse.
Ich habe versucht hinzuzufügenit.refresh()
undHibernate.initialize(it)
zu dem Code, bevor Eigenschaften überprüft werden, aber keine Verwendung. Was mache ich hier falsch?
upd: Ich habe versucht das anzurufenit.attach
Methode, bevor die Eigenschaften überprüft werden, aber direkt nach der Methode den Wert von aufrufenit.attached
istfalse
.