高清无版权网站织梦网站栏目添加

张小明 2026/3/12 13:27:46
高清无版权网站,织梦网站栏目添加,百度助手app下载,东莞响应式网站制作前言在 JPA 中處理 多對多 (Many-to-Many) 關係#xff0c;不使用 ManyToMany 註解方式#xff0c;而是將這個關係拆解為兩個一對多的單向關係#xff0c;並為中間表創建一個獨立的Entity.代碼如下:Entity Data NoArgsConstructor AllArgsConstructor Builder Table(name 不使用 ManyToMany 註解方式而是將這個關係拆解為兩個一對多的單向關係並為中間表創建一個獨立的Entity.代碼如下:Entity Data NoArgsConstructor AllArgsConstructor Builder Table(name users) public class User { Id GeneratedValue(strategy GenerationType.IDENTITY) private Long id; Column(name username, nullable false) private String username; Column(name password, nullable false) private String password; Column(name first_name, nullable false) private String firstName; Column(name last_name) private String lastName; Column(name email, nullable false, unique true) private String email; OneToMany(mappedBy user, cascade CascadeType.ALL, orphanRemoval true) private SetUserRole roles new HashSet(); public User(String username, String password, String firstName, String lastName, String email) { this.username username; this.password password; this.firstName firstName; this.lastName lastName; this.email email; } }Entity Data NoArgsConstructor AllArgsConstructor Builder Table(name roles) public class Role { Id GeneratedValue(strategy GenerationType.IDENTITY) private Long id; Column(length 20) private String name; public Role(String name) { this.name name; } OneToMany(mappedBy role, cascade CascadeType.ALL, orphanRemoval true) private SetUserRole userRoles new HashSet(); }Data Embeddable public class UserRoleId implements Serializable { // 與 UserRole.java 中 MapsId 的名稱一致 Column(name user_id) private Long userId; Column(name role_id) private Long roleId; public UserRoleId() { } public UserRoleId(Long userId, Long roleId) { this.userId userId; this.roleId roleId; } Override public boolean equals(Object o) { if (this o) return true; if (o null || getClass() ! o.getClass()) return false; UserRoleId that (UserRoleId) o; return Objects.equals(userId, that.userId) Objects.equals(roleId, that.roleId); } Override public int hashCode() { return Objects.hash(userId, roleId); } }Entity Data NoArgsConstructor AllArgsConstructor Builder Table(name users_roles) public class UserRole implements Serializable { // ID EmbeddedId private UserRoleId id; // 關係到 User, userId 對映到 UserRoleId 中的 userId ManyToOne(fetch FetchType.LAZY) MapsId(userId) JoinColumn(name user_id) private User user; // 關係到 Role ManyToOne(fetch FetchType.LAZY) MapsId(roleId) JoinColumn(name role_id) private Role role; Column(name assigned_at) private LocalDateTime assignedAt; }當我們 序列化 User 實例時Jackson 會拋出JsonMappingException異常顯示Exception如下:原因:這個錯誤發生在 Jackson 嘗試將您的 JPA 實體 User 序列化為 JSON 字串時Jackson 序列化器仍然發現了一個循環無限遞歸序列化錯誤原因:循環序列化的多對多結構 User - UserRole - RoleJackson 序列化 User。在序列化 User 的屬性時遇到 roles 集合 (SetUserRole)。序列化 UserRole 時遇到 User 實體 (ManyToOne private User user;)。Jackson 再次嘗試序列化這個 User 物件回到步驟 1形成無限循環。註: Jackson 預設的最大遞歸深度是 1000 層當達到這個限制時它會拋出這個錯誤以避免堆棧溢出StackOverflowError。任務針對 User 序列化為 JSON 字串時Jackson JSON 的無限遞迴問題提出處理雙向關係的方法。處理動作步驟一. 首先建立一個測試案例測試:Transactional SpringBootTest public class UserRoleRelationshipTest { Test void testReadUserRoleRelationship() { try { ListUser users userRepository.findAll(); // 獲取所有用戶 System.out.println(****** 獲取所有用戶: ******); ObjectMapper objectMapper new ObjectMapper(); objectMapper.registerModule(new JavaTimeModule()); String jsonArray objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(users); System.out.println(jsonArray); } catch (JsonProcessingException e) { e.printStackTrace(); } }步驟二. 預備測試資料已存 DB測試用Table users步驟三. 實作方案方案一使用JsonIgnore不想序列化某個屬性使用JsonIgnore註解來忽略關係中的某個屬性選項1public class User { . . . OneToMany(mappedBy user, cascade CascadeType.ALL, orphanRemoval true) JsonIgnore private SetUserRole roles new HashSet(); . . . }測試結果% mvn test選項2public class UserRole implements Serializable { . . . ManyToOne(fetch FetchType.LAZY) MapsId(userId) // 映射到 UserRoleId 中的 userId JoinColumn(name user_id) JsonIgnore private User user; ManyToOne(fetch FetchType.LAZY) MapsId(roleId) // 映射到 UserRoleId 中的 roleId JoinColumn(name role_id) JsonIgnore private Role role; . . . }測試結果% mvn test方案二使用JsonManagedReferences和JsonBackReferencesOneToMany(mappedBy user, cascade CascadeType.ALL, orphanRemoval true) JsonManagedReference private SetUserRole roles new HashSet(); OneToMany(mappedBy role, cascade CascadeType.ALL, orphanRemoval true) JsonManagedReference private SetUserRole userRoles new HashSet(); ManyToOne(fetch FetchType.LAZY) MapsId(userId) // 映射到 UserRoleId 中的 userId 屬性 JoinColumn(name user_id) JsonBackReference private User user; ManyToOne(fetch FetchType.LAZY) MapsId(roleId) // 映射到 UserRoleId 中的 roleId 屬性 JoinColumn(name role_id) JsonBackReference private Role role;執行測試結果:
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做任务拿赏金的网站百度图片识别在线使用

TestLink测试管理系统完全指南:从入门到精通的高效实践 【免费下载链接】testlink-code 项目地址: https://gitcode.com/gh_mirrors/te/testlink-code TestLink是一款专业的Web测试管理系统,为企业级测试团队提供了完整的测试用例管理、测试计划…

张小明 2026/3/5 3:39:06 网站建设

如何做网站app动漫网页设计图片

智能家居设备集成:从混乱到统一控制的完整指南 【免费下载链接】core home-assistant/core: 是开源的智能家居平台,可以通过各种组件和插件实现对家庭中的智能设备的集中管理和自动化控制。适合对物联网、智能家居以及想要实现家庭自动化控制的开发者。 …

张小明 2026/3/5 3:39:10 网站建设

百汇游戏网站开发商让人做网站需要注意什

Wan2.2-T2V-A14B在跨境电商多语种商品视频中的统一质量控制 在全球化电商竞争日益激烈的今天,消费者不再满足于静态图片和简短描述。他们希望看到商品“活起来”——模特试穿连衣裙时裙摆随风轻扬,咖啡机蒸汽缓缓升腾,电动牙刷刷头在牙齿模型…

张小明 2026/3/5 3:39:10 网站建设

新手学做网站要多久网页h5

哔哩下载姬DownKyi:5个简单步骤掌握B站视频批量下载 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xf…

张小明 2026/3/5 3:39:12 网站建设

河池网站推广给厂家做代理上什么网站

Linux 文件与目录管理全解析 1. 工作目录的管理 在 Linux 系统中,工作目录的管理是一个基础且重要的操作。下面的代码展示了如何保存当前工作目录,切换到另一个目录,完成工作后再返回原目录: int swd_fd; swd_fd = open (".", O_RDONLY); if (swd_fd == -1) …

张小明 2026/3/5 3:39:12 网站建设

php可以自己做网站吗企业网站如何宣传

在游戏开发过程中,光照系统往往是性能消耗的主要来源之一。本文将从性能优化角度深入解析Godot引擎的光照贴图技术,通过问题诊断、方案制定、实战演练和效果验证四个环节,帮助开发者构建既高效又美观的渲染方案。 【免费下载链接】godot Godo…

张小明 2026/3/12 4:08:44 网站建设