Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何使用SpringDataREST通过不可为空的联接列在单向关系中创建和链接子实体_Spring Boot_Spring Data Jpa_Entity Relationship_Spring Data Rest_Joincolumn - Fatal编程技术网

Spring boot 如何使用SpringDataREST通过不可为空的联接列在单向关系中创建和链接子实体

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

当它们之间的关系是一对多+单向(特别是从父实体到子实体)时,我不知道如何使用Spring数据Rest添加子实体(比如说,将
注释
实体添加到父实体
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。