Je les classes de domaine:Comment référencer un champs de classe de domaine Grails depuis l'extérieur du contrôleur Grails et afficher?
class Child {
static hasMany = [ toys : Toy ]
String name
Set toys
}
class Toy {
static belongsTo = [ owner : Child ]
String name
}
Dans mon JSP je référence à un enfant par:
child = Child.findByName("Joe")
ou
child = Child.findById(123)
Mais lorsque je tente d'accéder à ses champs:
child.getToys()
Je reçois l'erreur:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Child.toys, no session or session was closed
Ai-je besoin de démarrer manuellement la session Mise en veille prolongée? Si oui, comment ferais-je cela?
Suivi février 2012: Ce comportement est également présent lors de l'exécution de la console Grails (Grails 2.0.0)
C'est à partir d'un JSP. Je rééquipe une application héritée qui interroge à partir de la vue. Je devrais juste le changer pour suivre le modèle MVC de Spring/Grails. –
J'ai essayé de mettre la recherche à l'épreuve, mais il manque maintenant beaucoup de contenu à ses jouets. En d'autres termes, si je ne spécifie pas aller chercher, tous les jouets sont chargés. Si je spécifie aller chercher, alors seulement 10-20% des jouets sont chargés. –
C'est bizarre. J'ai vu le problème dans le JIRA (GRAILS-3712). Pour contourner le problème final, vous pouvez définir les collections que vous utilisez dans les vues à avidement récupérées par défaut: // (dans la classe de domaine) cartographie statique { jouets paresseux: false } Cela devrait résoudre le problème pour l'instant . –