程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Data Rest-子引用上的存储库上的PUT静默失败大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Data Rest-子引用上的存储库上的PUT静默失败?

开发过程中遇到Spring Data Rest-子引用上的存储库上的PUT静默失败的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Data Rest-子引用上的存储库上的PUT静默失败的解决方法建议,希望对你解决Spring Data Rest-子引用上的存储库上的PUT静默失败有所启发或帮助;

经过更多调查后,似乎此行为是有目的的:PUT不会更新资源链接,而只会更新主要属性。

来自Oliver GIErke的答案是在这里:https : //jira.spring.io/browse/DATAREST-1001?focusedCommentID= 135791& page= com.atlassian.jira.plugin.system.issuetabpanels%3Acomment- tabpanel#comment-135791 :

其他帖子和链接:

  • 无法使用项目资源上的PUT请求更新关联的资源”:https : //jira.spring.io/browse/DATAREST-1001
  • “ Spring Data Rest PUT与PATCH linkableresources”:[Spring Data Rest PUT与PATCH
  • “对于嵌套集合,其行为类似于PATCH”:https : @L_502_7@

解决方法

我用Spring Data RestSpring Boot2.1.1.RELEASE。

我有一堂课User和一个班级有@manyToMany关系Skill

  • 当我POST用自己的技能@R_986_10589@时,@R_842_6944@。
  • 当我PUT更新用户时,技能不会更新,不会产生任何错误。
  • 但是当我用a PATCH代替a时PUT,技能会正确更新。

我可能在某处错过了一些东西&Hellip;

(使用龙目岛代码)

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {

@Id
@GeneratedValue
private Long id;

private String firstName;
private String lastName;

@manyToMany
@JoinTable(name="user_skills")
private List<Skill> skills = new ArrayList<>();

}

@Entity
@Getter
@Setter
@NoArgsConstructor
@ToString
public class Skill {

@Id
@GeneratedValue
private Long id;

private String name;
}

PUT用以下JSON内容制作:

{
  "id": 7,"firstName": "John","lastName": "Doe","skills": ["http://localhost:9001/skills/1","http://localhost:9001/skills/2","http://localhost:9001/skills/3"]
}

firstName或lastName可以修改,但是技能保持不变。

如果我PATCH使用相同的有效载荷进行操作,则技能将正确修改。

它应该与一起使用PUT,不是吗?

大佬总结

以上是大佬教程为你收集整理的Spring Data Rest-子引用上的存储库上的PUT静默失败全部内容,希望文章能够帮你解决Spring Data Rest-子引用上的存储库上的PUT静默失败所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。