我遇到了Jackson 1.6.3和Hibernate的问题。我在这里找到了这个帖子:Infinite Recursion with Jackson JSON and Hibernate JPA issue
但它没有解决问题。
我有一个具有传入和传出关系的Node对象。即使使用@JsonManagedReference注释,在应用服务器的控制台上我也可以看到抛出的异常(无限递归)。
还有其他选择吗?
@Entity
@Table(name="nodes")
public class Node implements Serializable {
@Id
private String id;
@Column(name="x_pos")
private double x;
@Column(name="y_pos")
private double y;
@OneToMany
@JoinColumn(name="source")
@JsonManagedReference("outgoingRelations")
private Set<Relation> outgoingRelations;
@OneToMany
@JoinColumn(name="target")
@JsonManagedReference("incomingRelations")
private Set<Relation> incomingRelations;
@Entity
@Table(name="relations")
public class Relation implements Serializable {
@Id
private Long id;
@ManyToOne
@JoinColumn(name="source")
@JsonBackReference("outgoingRelations")
private Node source;
@ManyToOne
@JoinColumn(name="target")
@JsonBackReference("incomingRelations")
private Node target;
此致
答案 0 :(得分:2)
答案 1 :(得分:0)
我们可以通过以下3种方式尝试在Node端或Relation端打破循环
使用@JsonIdentityInfo
@Entity
@Table(name = "nodes")
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id")
public class Node {
...
}
@Entity
@Table(name = "relations")
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id")
public class Relation {
...
}
使用@JsonIgnore
@OneToMany(fetch = FetchType.LAZY,mappedBy="node")
@JsonIgnore
private List<Node> lstNode;
有关工作演示的更多详细信息here。