如何处理杰克逊的无限递归

时间:2016-05-24 04:24:13

标签: java json spring jdbc spring-data

我的问题是我有两个课程如下

    public class User implements UserDetails {
        @Id
        @GeneratedValue
        @Column(name = "user_id")
        private Long Id;
        @OneToOne
        @JsonManagedReference
        private Wallet wallet;
         .........
         // Getters and setters..
    }

@Entity
public class Wallet {

@Id
@GeneratedValue
private Long Id;
@OneToOne()
@JsonBackReference
private User user;
.........
//Getters and setters.
}

有时我需要Wallet模型中的User信息,有时我需要相反的信息。

所以,如果我在任何一方写Json Ignore或Json back reference,我就无法得到另一个对象。

例如:如果我在@JsonBackReference课程中写Wallet,我在查询User时无法获得Wallet信息。

我的问题是如何处理这种情况。我尝试了@JsonIgnore@JsonBackReference

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Jackson 2.0+,则可以使用@JsonIdentityInfo来解决问题。

以下是docs的完整示例。