我有一对多的关系,即A和B.A可以指许多B实例 . B实例也可以独立管理 . 这就是为什么,B类看起来像这样:
public class B {
@Id
private String id;
private String appId;
}
类将引用B实例列表 . 所以它看起来像这样:
public class A {
@Id
private String id;
private int age;
private List<B> bInstances;
}
当b实例用B实例填充然后保存实例时,B实例的id字段将从JSON文档中删除,因为它是用@Id注释的 . 当B嵌入到另一个类中时,我只需要将此字段添加到JSON . 当B实例独立保存时,@ Id字段可以用作常规键 . 我怎么能这样做?
2 回答
要具体回答您的问题,是注释
@Id
的字段不会写入序列化的json . 这里你最好的选择是复制字段并在构造函数或setter中设置它的值,例如:如果您不希望在序列化中看到重复,则可以
@JsonIgnore
其中一个 .注意:我完全同意Robin的回答,但是有些情况下你想保存数据,并且你想在将来引用它 . 所以你不关心B实例是否在一周之后改变了你保存了数据 . 所以它真的取决于你的情况 .
我强烈建议你直接将B的实例存储在A的文档中 . 如果B的实例在A的另一个上下文中被更改,则会导致数据不一致 . 另外,如果B的实例是B,则会不必要地复制数据 . 存储在A类的多个文档中
将一个类的实例存储在另一个类中的所需方法是保存文档ID . 所以你的A级应该是这样的: