Spring AbstractMongoEventListener 不触发

Spring AbstractMongoEventListener does not trigger

上下文: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,我希望也会为 ​​A 的 DBRef 列表中的每个项目 B 触发 onAfterConvert 方法。实际上,它不是。

我猜测这按设计工作,另一方面我不明白为什么 onAfterConvert 不应该对从数据库加载的任何 entity/document 起作用的原因。

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

不知道,如果有更好的方法来解决这个问题,但这对我有用:

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

其他answers/recommendations欢迎

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