spring - 在 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 列
- IndicationID 是主键
- IndicationDescription 是一个字符串
- 表示同一个表中一行的外键引用,所以是多对一的关系
由于我使用的是 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发出另一个更新请求/指示
提前致谢。
解决方案
推荐阅读
- r - 如何使用 R 构建具有来自其他两个不同大小向量的特定数据的新向量
- c# - 在 setter 中更改 value 关键字是否错误?
- angular - Angular Material Accordion ngFor 与内部组件
- ios - iOS应用程序中的删除请求后奇怪的超时
- javascript - HTML 5 Drag Drop - 获取被拖动元素的放置位置
- javascript - Javascript:如何对引用另一个域的 URL 使用 setAttribute“href”
- regex - 用于验证不同格式字符串的正则表达式,用于特殊时间转换
- python - 如何将特定列中的所有值转换为 Pandas 中的列表字符串
- laravel - Laravel 测试 api Post MethodNotAllowedHttpException
- python - 比较同一 csv 文件中的两列