对一对多关系表执行POST命令时出现问题

时间:2015-12-01 20:12:33

标签: java json spring hibernate jackson

我在两个java实体之间有一对多的关系,比方说StudentGrade

我正在对这两个表做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后,我能够GETPOSTGrade实体,我能够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

有人可以提供建议吗?

0 个答案:

没有答案