Spring AbstractMongoEventListener不会触发

时间:2016-04-15 20:30:14

标签: java spring mongodb event-listener dbref

上下文:Java8应用程序,Spring MongoDB 1.9.1

我有一个包含A实体的集合,另一个包含B实体的集合。在我的域模型中,实体A有一个B集合作为DBRef,就像这样

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

此外,我已经注册了两个AbstractMongoEventListener,一个用于A,另一个用于B.如果我直接通过MongoTemplate.findById()获取类型为A或B的文档,则触发onAfterConvert()方法。但是,如果我只是获取A,我会期望对于DBRef的A列表中的每个项目B也触发onAfterConvert方法。实际上,它不是。

我猜测这是按设计工作的,另一方面我没有看到为什么onAfterConvert不适用于从DB加载的任何实体/文档的原因。

长话短说,我需要在A加载后对B的所有项目进行一些后期处理。有没有人有这个优雅的解决方案?

2 个答案:

答案 0 :(得分:1)

毫无头绪,如果有更好的方法可以解决这个问题,但这对我有用:

在扩展的DefaultDbRefResolver中覆盖resolveDbRef()方法,并在创建bean时将其传递给您自己的MappingMongoConverter。

其他答案/建议欢迎

答案 1 :(得分:0)

我认为这与https://jira.spring.io/browse/DATAMONGO-1044有关 - 应该在下一个主要的Spring Data MongoDB版本(1.10)中修复。