Mam metodę o następującej strukturze:Grails Gorm: Nie można zainicjować serwera proxy - nie Session
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)
}
}
}
}
}
Wyjątkiem Dostaję Oto org.hibernate.LazyInitializationException: could not initialize proxy - no Session
w drugiej części mojego kodu. Tutaj pole userStatus
jest odniesieniem do innej klasy domeny.
Próbowałem dodać it.refresh()
i Hibernate.initialize(it)
do kodu, zanim właściwości zostaną zaznaczone, ale bezużyteczne. Co ja tu robię źle?
UPD: Próbowałem wywołać metodę it.attach
przed właściwości są sprawdzane, ale tuż po metody zadzwonić wartość it.attached
jest false
.
Czy wywołujesz tę metodę w widoku? –
@ SérgioMichels, nie, ta metoda jest wywoływana przez harmonogram. Zadanie jest dodawane do programu planującego, który wywołuje metodę "run()". – svz