0

上下文: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 不应该适用于从数据库加载的任何实体/文档的原因。

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

4

2 回答 2

1

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

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

欢迎其他答案/建议

于 2016-04-18T07:29:20.827 回答
0

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

于 2016-12-29T13:58:29.877 回答