2016-04-15 1 views
0

Contexte: application Java8, Spring MongoDB 1.9.1Spring AbstractMongoEventListener ne déclenche pas

J'ai une collection contenant des entités de A, et une autre collection contenant des entités de B. Dans mon modèle de domaine, l'entité A a une collection de B comme DBRef comme celui-ci

class A { 
    @DBRef 
    List<B> myBs; 
} 

de plus, j'ai enregistré deux AbstractMongoEventListeners, un a et un autre pour B. Si un document que je vais chercher de type a ou B directement via MongoTemplate.findById(), le La méthode onAfterConvert() est déclenchée correctement. Cependant, si je viens de chercher A, je m'attendrais à ce que la méthode onAfterConvert soit déclenchée aussi pour chaque élément B de la liste DBRef'ed de A. En fait, ce n'est pas le cas.

Je risque de deviner que cela fonctionne comme prévu, de l'autre côté, je ne vois pas la raison pour laquelle onAfterConvert ne devrait pas fonctionner pour toute entité/document en cours de chargement de la base de données. En bref, j'ai besoin de faire un post-traitement pour tous les éléments de B après que A a été chargé. Quelqu'un at-il une solution élégante pour cela?

Répondre

1

Aucune idée, s'il y a de meilleures façons de résoudre ce problème, mais cela fonctionne pour moi:

Ecraser la méthode dans une DefaultDbRefResolver étendue et le transmettre votre propre MappingMongoConverter resolveDbRef() lors de la création du haricot.

Autres réponses/recommandations bienvenue

0

Je pense que cela est lié à https://jira.spring.io/browse/DATAMONGO-1044 - devrait être fixé dans la prochaine version majeure MongoDB données Spring (1.10).

+0

Veuillez ajouter des informations sur votre réponse –

+0

Ceci est plus approprié comme commentaire. – Sid

+0

@Sid Je ne pouvais pas poster un commentaire. – user2881690