Spring boot 如何使用SpringDataREST通过不可为空的联接列在单向关系中创建和链接子实体
当它们之间的关系是一对多+单向(特别是从父实体到子实体)时,我不知道如何使用Spring数据Rest添加子实体(比如说,将Spring boot 如何使用SpringDataREST通过不可为空的联接列在单向关系中创建和链接子实体,spring-boot,spring-data-jpa,entity-relationship,spring-data-rest,joincolumn,Spring Boot,Spring Data Jpa,Entity Relationship,Spring Data Rest,Joincolumn,当它们之间的关系是一对多+单向(特别是从父实体到子实体)时,我不知道如何使用Spring数据Rest添加子实体(比如说,将注释实体添加到父实体post实体)当数据库在子实体表上使用不可为空的联接列时 对于使用SpringDataREST链接关系中的两个实体,我认为通常的方法是首先创建两个实体(通过对各自端点的POST调用),然后使用PUT或补丁将它们链接到关系端点,例如/api/posts/1/comments。该链接请求的主体将包含指向先前创建的子实体的链接,如http://localhost
注释
实体添加到父实体post
实体)当数据库在子实体表上使用不可为空的联接列时
对于使用SpringDataREST链接关系中的两个实体,我认为通常的方法是首先创建两个实体(通过对各自端点的POST调用),然后使用PUT或补丁将它们链接到关系端点,例如/api/posts/1/comments
。该链接请求的主体将包含指向先前创建的子实体的链接,如http://localhost:8080/api/comments/1
。但是,对于子实体上的不可为null的联接列的情况,当我尝试创建子实体时,我无法创建,因为无法使用父id
联接列的null
值将其插入数据库
@实体
公营职位{
@身份证
私人长id;
私有字符串标题;
@独身癖
@JoinColumn(name=“post\u id”,nullable=false)
私人名单评论;
}
@实体
公开课评论{
@身份证
私人长id;
私有字符串消息;
}
@RepositoryRestResource
接口PostRestRepository实现JpaRepository{}
@存储资源
接口CommentRestorepository实现JpaRepository{}
当试图通过对/api/comments
的POST调用创建子实体时,我在响应正文中收到此错误:错误:“POST\u id”列中的null值违反了not null约束
我假设在此场景中有一种方法可以创建评论并将其链接到帖子,但我在任何地方都找不到答案。在创建新的
帖子
资源时,您可以将现有评论
资源的URI数组作为评论
字段的值发送,如下所示:
POST /api/posts
{
"title": "My Post",
"comments": [
"http://api-url/comments/1",
"http://api-url/comments/2"
]
}
不幸的是,SDR文件中似乎遗漏了这一重要信息。但是,您可以在中找到它
关于2017年以来缺乏文档的问题存在争议。Hey@Mathis,这是一项有用的技术。但我的主要问题是“如何创建一条立即连接到帖子的评论”,以便将数据库中的外键设置为NOTNULL。根据我现在的理解,如果两个实体都是
@RepositoryRestResource
s,则外键不可能为NULL。