我有一个名为User的实体,包含以下字段:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "last_name")
private String lastName;
@OneToMany(mappedBy="userId")
private List<Survey> survey= new ArrayList<>();
调查实体有:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "SURVEY_ID")
private Long Id;
@ManyToOne
@JoinColumn(name = "user_id",referencedColumnName="user_id")
private User userId;
.....
我希望一个用户有多个调查,每个调查都与一个用户有关。 但是我映射它的方式有问题,因为作为JSON文件,当我访问所有用户时,我得到了这个:
[{"id":1,"name":"User","lastName":"user","email":"user@user.com","surveyData":[{"userId":{"id":1,"name":"User","lastName":"user","email":"user@user.com","surveyData": ,...... and repeats itself
因此,我没有获得调查数据的值列表,而是获取用户信息的值? 有人可以帮我这个吗?
答案 0 :(得分:1)
您的映射是正确的。
只需在用户类中使用@JsonManagedReference
,在调查类中使用@JsonBackReference
即可。 @JsonManagedReference
是引用的前向部分 - 正常序列化的部分。 @JsonBackReference
是引用的后半部分 - 它将从序列化中省略。
在用户类中:
@OneToMany(mappedBy="userId")
@JsonManagedReference
private List<Survey> survey;
在调查班中:
@ManyToOne
@JoinColumn(name = "user_id",referencedColumnName="user_id")
@JsonBackReference
private User userId;
我有2条评论:
userId
重命名为user
,因为它是User对象而没有标识符。