我有两个实体:
Parent {
Child[] children;
}
and
Child {
Parent parent;
}
我知道关于@JsonBackReference
和@JsonManagedReference
。 他们是很好的,如果我序列化的情况下, Parent
。
但我也需要转移的情况下, Child
,我想有parent
填充字段。
换一种说法:
- 在系列化
Parent
就应该有children
,但他们的父母字段可能是空的(可以通过使用JSON参考注解来解决)。 - 在系列化
Child
它应该有parent
与他们的children
(但children
没有了parent
居住。
有没有使用标准杰克逊的能力来解决它的方法吗?
即跳过这已经连载,而不是资格或不符合序列标记域实体系列化。
杰克逊2.0不支持完整的循环对象的引用。 请参阅“ 杰克逊发行2.0 ”(节“处理任何对象图,甚至是环状的!”)的一个例子。
基本上,你将需要使用新的@JsonIdentityInfo
用于需要ID / IDREF风格处理的类型。 在你的情况,这将是双方Parent
和Child
类型(如果一个扩展等,只需将其添加到父类型,这就是罚款)。
非常方便的接口实现在杰克逊2库作为
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Parent { ....
@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Child { ....
在行家
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.0.2</version>
</dependency>
@StaxMan提供了一个很好的链接,从开始
文章来源: Jackson - serialization of entities with birectional relationships (avoiding cycles)