我在两个java实体之间有一对多的关系,比方说Student
和Grade
。
我正在对这两个表做POST命令,这是我的基本设置:
成绩实体:
@ManyToOne(fetch = FetchType.LAZY)
private Student student;
学生实体:
@OneToMany(mappedBy = "student")
private Set<Grade> grades= new HashSet<>();
当我正在进行GET接收现有学生的json数据(没有成绩)时,我会收到这样的json数据:
{
"grades":[],
"studentId": 3,
"studentName": "whatever"
}
如果我想POST给学生实体添加新学生,我可以像这样发送json数据:
{
"grades":[],
"studentName": "anything"
}
这里的json数据不包含&#34; studentId&#34;因为我在@GeneratedValue
变量上使用了studentId
注释。
因此,为了允许自己对grade
实体进行POST,我必须添加@JsonBackReference
和@JsonManagedReference
注释,如下所示:
成绩实体:
@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
private Student student;
学生实体:
@OneToMany(mappedBy = "student")
@JsonManagedReference
private Set<Grade> grades= new HashSet<>();
有趣的是,在我添加@JsonBackReference
和@JsonManagedReference
后,我能够GET
,POST
到Grade
实体,我能够GET
Student
实体,但是POST
实体Student
实体已经破坏,不再有效。
我收到错误:
Status Code: 415 Unsupported Media Type Content-Language: null Content-Length: 360 Content-Type: text/html;charset=UTF-8 Date: Tue, 01 Dec 2015 20:09:44 GMT Server: Apache-Coyote/1.1
有人可以提供建议吗?