我试图有条件地@JsonIgnore实体中的某些字段(如果它们是从另一个实体的集合中序列化的(很多到一个)).
我试图将@JsonIgnoreProperties添加到集合中,但是据我了解,注释并非用于此目的.
class A {
//some fields
@ManyToOne private B b; //if only A is requested,this should NOT be ignored
}
class B {
//some fields
@OneToMany
@IgnorePrivateBInAToAvoidStackOverflow
private Set<A> collectionOfAs;
}
有什么办法可以实现这种行为?
最佳答案
为了避免循环引用无限递归(stackoverflow错误),必须用@JsonIdentityInfo注释calss
所以您的课程看起来像:
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,property = "id")
class A {
//some fields
//Integer id;
@OneToMany private B b; //if only A is requested,this should NOT be ignored
}
B类可双向使用的情况相同:
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,property = "id")
class B {
//some fields
@ManyToOne
@IgnorePrivateBInAToAvoidStackOverflow
private Set<A> collectionOfAs;
}
请注意,该属性引用了您的唯一字段名称(在此示例中设置为id)
有关更多阅读,请参阅此article
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。