【问题标题】:SpringBoot - Switch jackson reference on many-to one-relationshipSpring Boot - 在多对一关系上切换杰克逊参考
【发布时间】:2017-12-25 23:33:17
【问题描述】:

我有一个运行良好的 springboot 应用程序。在其中,我有 2 个实体,项目和情感,具有多对一的关系。一个项目可以有很多做作,但一个做作只能有一个项目。我在“多”一个上设置了@JsonBackReference,在孤独的一个上设置了@JsonManagedReference。 GET / POST 请求运行良好。

问题:

目前,当我获得一个项目时,我会收到与该项目相关的伪装,当我获得伪装时,我没有关于链接项目的信息。

我想反转它。我希望当我做作时,我会收到链接的项目。为此,我切换了@jsonBackReference@JsonManagedReference

@Entity
@Table(name="Projet")
public class Projet{
...
    @OneToMany(mappedBy = "project")
    @JsonBackReference (value="project-affectation")
    @Cascade(value = { CascadeType.DELETE, CascadeType.SAVE_UPDATE })
    private Set<Affectation> affectations = new HashSet<Affectation>();
...
}



@Entity
@Table(name="Affectation")
public class Affectation{
...
    @ManyToOne
    @JoinColumn (name="projectid")
    @JsonManagedReference (value="project-affectation")
    private Project project;
...
}

使用此代码,GET 请求很好,我收到了我想要的。但是 POST 一个项目不再起作用了:

无法评估类型 [[simple type, class com.open.chargeplan.entities.Project]] 的 Jackson 反序列化:java.lang.IllegalArgumentException:无法处理托管/反向引用“project-affectation”:反向引用类型(java.util.Set) 与托管类型 (com.open.chargeplan.entities.Affectation) 不兼容

这就是我在 projectController.java 中发布的方式:

@RequestMapping(method = RequestMethod.POST, path="/add")
public ProjectResponse addNewProjet(@RequestBody Project project){
    projetRepository.save(project);
    return new ProjectResponse(ProjectResponse.Status.OK, project);
}

这就是我要发布的内容:

curl -i -X POST -H 'Content-Type: application/json' -d '{"projectid": “7A93154537”,“名称”:“项目测试”,“客户”:“客户测试”, "description": "这是一个测试"}' http://localhost:8081/project/add

我该如何解决这个问题?

【问题讨论】:

  • 你是什么POSTing?
  • @AnilBhaskar 我更新了我的问题
  • @AnilBhaskar 我的错,我误解了你的要求,我更新了我的问题

标签: java spring spring-boot jackson one-to-many


【解决方案1】:

我通过删除@JsonManagedReference 解决了这个问题,但保留@JsonBackReference

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2012-07-21
    • 2014-05-28
    相关资源
    最近更新 更多