我已经挣扎了几个小时来执行一个POST请求,将一个子(章)保存到父(用户)上。它不能正常工作,我找不到原因....
http://localhost:8080/api/chapters?username=admin
Content-type: application/json
Body: raw
{
"name": "Product Development",
}
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, updatable = false)
private Long id;
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String role;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "user")
private Set<Chapter> chapters = new HashSet<>();
public void addChapter(Chapter chapter) {
this.chapters.add(chapter);
chapter.setUser(this);
}
....
}
@Entity
public class Chapter {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, updatable = false)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
....
}
@RestController
public class ChapterController {
@Autowired
private ChapterRepository chapterRepository;
@Autowired
private UserRepository userRepository;
@RequestMapping("/chapters")
public Iterable<Chapter> getChapter() {
return chapterRepository.findAll();
}
@RequestMapping(value="/users/{id}/chapters", method = RequestMethod.GET)
Chapter getChapter(@PathVariable (value = "id") Long id) {
return chapterRepository.findByUserId(id).get();
}
@PostMapping("/chapters")// issue is here
void newChapter(@RequestParam (value = "username", required=true)
String username, @RequestBody Chapter newChapter) {
User user = userRepository.findByUsername(username);
user.addChapter(newChapter);
System.out.println(user);
userRepository.save(user);
}
}
我希望用父级保存子级,这意味着用user_id=1
,因为目前只有一个用户(id=1)。你能告诉我我错过了什么吗?
多谢
--------------更新--------------------------------------------------------------------------------------------------------------------------------------
我不知道为什么,因为在我的应用程序中。属性:
spring.data.rest.basePath=/api
但不管怎样,这是我的问题...
必须为@manytoone
映射添加级联。在用户@entity
中更新这一行,它就可以工作了:
@Entity
public class Chapter {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, updatable = false)
private Long id;
private String name;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name = "user_id")
private User user;
}
您可能要做的第二件事是更新控制器,因此它将用户id分配给新的章节,如下所示:
@PostMapping("/chapters")// issue is here
void newChapter(@RequestParam (value = "username", required=true)
String username, @RequestBody Chapter newChapter) {
User user = userRepository.findByUsername(username);
newChapter.setUser(user);
user.addChapter(newChapter);
System.out.println(user);
userRepository.save(user);
}
首先,请看一下代码。 对于优先级和步骤,我给出了onChange事件,因为它是一个选择表单。 此函数用于POST请求。我将每个编辑的数据发送到DB。 但是数据对象,您可以看到updateCols:[]。 在这个数组中,我必须放置已更改的属性。 例如,如果我更改标题、说明和开始日期,我必须将数组更改为 我觉得不可能每次都能查到这张申请表,所以我觉得这张申请表有问题。 有人可能只编辑标题,有人可能编辑
我有以下根项目设置: 当我键入时,我得到一个错误,说明: [错误](运行main)java。sql。SQLException:未找到适合jdbc的驱动程序:mysql://localhost/db?user=userid 因此,在运行期间,项目中的依赖项似乎不是类路径的一部分?我觉得很奇怪只是这种依赖而不是其他。。。这是动态加载类的方式吗? 有没有解决办法?
我已经用谷歌搜索了它。但是这些都不能解决我的问题。我在调用rest控件时,代码中的SSL证书出现了问题。 我的控制方法是: 错误为:-I/O错误在“https://myurl.com”的POST请求上:sun.security.validator.validatoreXception:PKIX路径构建失败:sun.security.provider.certpath.suncertPathBuil
我已经做了一个简单的场景登录在ASP点网络应用程序。但是我在登录时发送的请求在执行时显示为GET。第一个图像是HTTP请求的屏幕截图,第二个图像是执行时请求详细信息的屏幕截图。如何将该请求转换为POST请求?还添加了显示“对象移动到这里”消息的响应数据截图。
问题内容: 我需要能够在我们的Jenkins Pipeline构建过程中创建简单的HTTP POST请求。但是,我不能使用简单的curl sh脚本,因为我需要它在Windows和Linux节点上工作,并且如果可以避免的话,我不希望在节点上执行更多的工具安装。 我们正在使用的Pipeline插件中使用的Groovy库对于此任务应该是完美的。Groovy有一个扩展名,可以执行简单的POST,称为htt
我需要能够在我们的Jenkins管道构建期间创建简单的HTTP POST请求。但是我不能使用简单的curl sh脚本,因为我需要它在Windows和Linux节点上工作,如果我可以避免的话,我不希望在节点上强制安装更多的工具。 我们正在使用的管道插件中使用的Groovy库应该非常适合此任务。Groovy有一个扩展来执行简单的POST,称为http builder,但我一生都无法在Jenkins的G