Jackson:多个反向引用属性,名称为"defaultReference"

Kie*_*goc 20 java spring hibernate jackson

我正在尝试将json(字符串格式)映射到对象,我收到以下错误

com.fasterxml.jackson.databind.JsonMappingException:名称为'defaultReference'的多个反向引用属性

这是json字符串

{"pledge":"74","client":"66","date":"","originId":"1","qualityId":"2","grade":"19","packing":"4","tons":"1000","fromDate":"","toDate":"","type":0,"remark":"","status":0,"area":"1531","id":-1,"refNumber":"","log":"","user":""}
Run Code Online (Sandbox Code Playgroud)

这是对象

@Entity
@Table(name="movement", catalog = "wsmill3")
public class MovementView implements java.io.Serializable {
    private Integer id;
    private Integer originId;
    private Integer qualityId;
    private String refNumber;
    private Integer client;
    private String clientRef;
    private Integer grade;
    private Integer packing;
    private Integer pledge;
    private Integer area;
    private Date date;
    private Double tons;
    private Date fromDate;
    private Date toDate;
    private String remark;
    private User user;
    private Byte status;
    private String log;
    private Byte type;
    //constructor, getter and setter
Run Code Online (Sandbox Code Playgroud)

这是做映射的代码

String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper();
MovementView movement = mapper.readValue(data, MovementView.class);
Run Code Online (Sandbox Code Playgroud)

我不知道这个错误,我的确与我在杰克逊主页上看到的完全相同.任何了解它的人,请帮助我

小智 42

如果在项目中的getter/setter方法上使用@JsonBackReference两次以上,则应使用特定的引用名称区分它们.在最新版本中只允许使用一个"defaultReference".

例如

在MovementView.class中

    @JsonBackReference(value="user-movement")
public User getUser() {
    return user;
}
Run Code Online (Sandbox Code Playgroud)

在User.class中

    @JsonManagedReference(value="user-movement")
    public User getMovementView() {
    return movementView;
}
Run Code Online (Sandbox Code Playgroud)