让我们假设我有以下JPA实体:
@MappedSuperclass
public abstract class BaseForumPersistable {
@Id
Long id;
String title;
Date creationDate;
@ManyToOne
User user;
//getters, setter
}
@Entity
public class ThematicArea() {
@OneToMany(mappedBy="thematicArea")
List<Topic> topics;
//getters, setters
}
public class Topic() {
String status;
boolean isSticky;
@ManyToOne
ThematicArea thematicArea;
@OneToMany
List<Post> posts
//getters, setters
}
我还将这些实体用于处理REST
请求的POST
控制器。例如,对于Topic
,我有一个/api/topics
端点。当我发送这样的东西作为JSON对象时
{
"user": {
"id": 3,
"role": "Admin"
},
"thematicArea": {
"id": 1
},
"title": "asdf",
"status": "Active"
}
它无法创建主题区域,尽管它完美地创建了用户实体。控制器签名如下:
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> create(@RequestBody final Topic entity)
因此,当我使用带有断点的调试器时,ThematicArea
实体甚至不会被反序列化。
此外,如果我发送这样的对象:
{
"user": {
"id": 3,
"role": "Admin"
},
"thematicArea": {
"id": 1,
"title": "topic_title"
},
"title": "asdf",
"status": "Active"
}
现在还在title
对象中包含ThematicArea
字段,两个标题字段混在一起。这让我相信这是一个反序列化的问题。我有什么想法可以解决这个问题。