Java - Jackson,De-Serializing子类

时间:2015-10-27 20:51:48

标签: java json jackson

让我们假设我有以下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字段,两个标题字段混在一起。这让我相信这是一个反序列化的问题。我有什么想法可以解决这个问题。

0 个答案:

没有答案