2010-11-14 44 views
1

Mon film de classe a une relation @OneToOne avec Director et une relation @ManyToMany avec Actor. Toutes ces classes (Movie, Director et Actor) sont mises en cache en mode lecture seule, tout comme les collections. J'utilise le cache de second niveau de Hibernate avec ehCache. Les relations sont LAZY, donc j'ai le problème suivant: si un Movie arrive au cache de second niveau sans appeler getDirector() ou getActors(), nous obtiendrons une exception LazyInitializationException si ces méthodes sont appelées par la suite sans Session. merge(), et ce n'est pas une option pour moi.Cache et associations de second niveau Hibernate

Je suppose que mon problème serait résolu si je pouvais accrocher à l'événement "mettre en cache" et appeler mes méthodes paresseuses. Existe-t-il une telle chose? Je suis réticent à écrire du code d'infrastructure personnalisé, car la mise en cache de second niveau est activée/désactivée selon l'application, etc.

Ai-je oublié autre chose?

Merci.

Répondre

0

Si les relations sont mises en cache, que gagnez-vous en les récupérant par LAZY? Il suffit de les tourner vers EAGER et votre problème sera résolu.