5

我在最简单的头像中使用 Mongo(结合 Spring Data)。

我有两个(第一类)实体(@Documents)A 和 B,其中 A 在其中有 B 的引用(@DBRef)。创建 A 和 B 时一切正常。但是,在读取对象 A(按 Id)时,引用 B 始终为null

我相信默认情况下会急切地获取 DBRefs(请参阅http://static.springsource.org/spring-data/data-document/docs/current/reference/html/#mapping-usage-references),但目前的行为是反对的那。任何想法为什么?

4

2 回答 2

2

你是对的,任何 DBRefs 都被急切地获取,但它们没有被急切地保存(AFAIK)。如果 A 有对 B 的引用,当你保存 A 时,Spring Data/MongoDB 不会自动保存 B,你必须这样做。

// Incorrect, upon retrieval a.getB() == null
A a = new A();
a.setB(new B());
repositoryA.save(a);

// Correct (to the best of my knowledge)
B b = repositoryB.save(new B());
A a = new A();
a.setB(b);
repositoryA.save(a);
于 2011-11-11T01:44:48.107 回答
1

转移到 Spring Data Mongo M5 构建解决了这个问题。所以,在那之前一定是个bug。

于 2011-11-22T18:20:56.200 回答