Grails GORM: impossible d'initialiser le proxy - pas de session
J'ai une méthode avec la structure suivante:
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)
}
}
}
}
}
L'exception que je suis arriver ici, est org.hibernate.LazyInitializationException: could not initialize proxy - no Session
dans la deuxième partie de mon code. Ici le userStatus
domaine est une référence à un domaine différent de la classe.
J'ai essayé d'ajouter it.refresh()
et Hibernate.initialize(it)
le code avant de propriétés sont vérifiées, mais pas de l'utiliser. Ce que je fais mal?
upd: j'ai essayé d'appeler le it.attach
méthode avant les propriétés sont vérifiées, mais juste après l'appel de la méthode de la valeur de it.attached
est false
.
source d'informationauteur svz
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous faites quelque chose de mal, c'est juste que l'objet obtenu est détaché de la session hibernate. Un couple de choses que je voudrais essayer:
J'ai eu exactement la même erreur quand j'ai été en utilisant des sous classes de domaine dans une classe, si votre taille est plus qu'un format de page, vous obtenez le Message d'erreur: impossible d'initialiser le proxy - pas de Session"
Par l'aide de <> paresseux:false, hibernate utilisera la session pièce jointe correctement et d'obtenir les données affichées.
Merci pour ce post. J'ai pu résoudre mon erreur.
Thomas Farvour pointé dans la bonne direction. Les docs, 13.1.1 les Opérations de Restauration et de la Session, suggèrent hâte-aller chercher les enfants comme la solution optimale.