首页 > 解决方案 > 在 Spring Data Rest 中指定外键引用,使用 HTTP PUT 更新请求

问题描述

我有一个实体

@Entity
@Table(name="Indications")
@NamedQuery(name="Indication.findAll", query="SELECT i FROM Indication i")
public class Indication implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="IndicationID")
    private int indicationID;

    @Column(name="IndicationDescription")
    private String indicationDescription;

    @ManyToOne
    @JoinColumn(name="ParentIndicationID")
    private Indication indication;

}

从实体中可以看出,该表有 3 列

由于我使用的是 Spring Data Rest,因此我可以使用 HTTP POST 和以下正文创建新记录

{
    "indicationDescription": "dummy1",
    "indication": "/indications/1"
}

这将在数​​据库中创建一个内容为 dummy1 的新行,并创建一个对 id 为 1 的记录的外键引用。

但是当我尝试使用带有以下正文的 HTTP PUT 更新外键引用时

{
    "indicationDescription": "dummy2",
    "indication": "/indications/2"
}

虽然它更新了indicationDescription,但它实际上并没有更新外键引用。

我知道我可以通过使用 URL http://localhost:8080/indications/7733/indication并 在将内容类型设置为文本后将 正文作为 http://localhost:8080/indications/2发送来更新外键引用/uri 列表

我的问题是,有没有一种方法可以在一个请求中使用类似于我用于创建记录的主体来执行更新,而不是使用 URL - http://localhost:8080/indications/7733发出另一个更新请求/指示

提前致谢。

标签: springjpaspring-data-jpaspring-dataspring-data-rest

解决方案


推荐阅读