河南省汝州市文明建设网站邢台123免费发布信息

张小明 2026/1/10 2:05:42
河南省汝州市文明建设网站,邢台123免费发布信息,用ps怎么做网站导航条,手机网站编程语言前言在 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进行投诉反馈,一经查实,立即删除!

网站 微信维护怎么做学校官网在哪里找

LangFlow:让 AI 开发“所见即所得” 在大模型浪潮席卷各行各业的今天,构建一个能对话、会推理、可执行任务的 AI 智能体似乎不再遥不可及。然而,对于大多数开发者而言,LangChain 这类强大框架的背后,是陡峭的学习曲线和…

张小明 2025/12/31 16:19:45 网站建设

网站和网页的不同memcached wordpress

Source Han Serif思源宋体:免费商用开源字体完全使用指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为字体版权问题而烦恼?想要找到一款既专业又完全免…

张小明 2025/12/31 14:34:15 网站建设

怎么申请建立个人免费网站烟台优化网站排名

GmsCore启动故障终极解决方案:从新手到专家的快速修复指南 【免费下载链接】GmsCore Free implementation of Play Services 项目地址: https://gitcode.com/GitHub_Trending/gm/GmsCore 当你的Android设备上GmsCore(Google移动服务核心&#xff…

张小明 2026/1/2 10:26:03 网站建设

购物网站界面设计欣赏广州金山大厦 网站建设

Excalidraw策略模式封装:算法切换无缝衔接 在智能协作工具日益普及的今天,用户不再满足于单纯的绘图能力——他们希望用一句话生成架构图、通过语音快速创建流程草稿,甚至让AI自动优化布局。Excalidraw 作为一款极简风格的手绘式虚拟白板&…

张小明 2025/12/31 10:12:37 网站建设

电信宽带做网站服务器科凡建站

Excalidraw进阶玩法:结合大模型API自动生成UI草图 在一场远程产品评审会上,产品经理刚说完“我们需要一个带侧边栏的管理后台”,不到十秒,白板上就出现了一个结构清晰、风格统一的界面草图——输入框、按钮、导航菜单一应俱全。这…

张小明 2026/1/9 1:50:02 网站建设

自己注册网站要多少钱帮人家做网站难吗

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

张小明 2025/12/31 15:05:36 网站建设