DBRefs(Mongo文档引用)没有急切地获取

时间:2011-11-09 17:12:58

标签: java spring mongodb spring-data spring-data-document

我在最简单的化身中使用Mongo(与Spring Data一起使用)。

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

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

2 个答案:

答案 0 :(得分:2)

你是对的,任何DBRef都被急切地提取,但它们并没有被急切地保存(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);

答案 1 :(得分:1)

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