我正在处理和存储来自sql数据库的一些数据。我在一次传递中存储对象A的数据,并将对象B存储在另一个传递中。对象B中保存了A的_id。我想保存A并引用B,这样当我加载A时,我会同时获得B中的所有信息。
然而,在我生成对象B的时候,对象A不会在我的记忆中,而不是没有巨大的重构。因为参考对象只是一个_id,所以我可以告诉morphia他们应该使用A的_id引用A而不先将所有A加载到内存中以将对象保存到B中吗?除了A的_id以及其他每一个值设置为默认值并保存它有效地执行我想要的操作时,是否会创建一个“空”对象?
答案 0 :(得分:2)
如果你在morphia级别工作,那么你需要一个A对象参考。也就是说,它不一定是完整的A.例如:
B b = new B();
// some work here
b.setA(new A(idForA)));
datastore.save(b);
所有morphia需求都是集合(它从A的映射信息中获取)和该A的_id值。这里会发生什么是保存b
时它会创建Key(保留它)对于A
,然后使用该值在数据库中创建DBRef
。 Morphia并不关心@Reference
成员中的任何其他州。因此,只要它可以提取该ID进行保存,您应该全部设置。