上下文: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,我希望onAfterConvert方法也会为A的DBRef列表中的每个项目B触发。实际上,它不是。
我大胆地猜测,这是按设计工作的,另一方面,我不明白onAfterConvert不适用于从DB加载的任何实体/文档的原因。
长话短说,在A加载后,我需要对B的所有项目进行一些后期处理。有人对此有一个优雅的解决方案吗?
没有线索,如果有更好的方法来解决这个问题,但这对我有效:
在扩展的DefaultDbRefResolver中覆盖resolveDbRef()方法,并在创建bean时将其传递给您自己的MappingMongoConverter。
其他答案/建议欢迎
我认为这与https://jira.spring.io/browse/DATAMONGO-1044-应该在下一个主要的SpringDataMongoDB版本(1.10)中修复。