栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring数据全部一对多地搁置

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring数据全部一对多地搁置

终于我找到了解决方案。这是Jackson
json解组的问题。缺少的是一种告诉对象映射器一对多关系的方法,只有这样,它才能正确创建父对象和子对象,然后hibernate将在该对象上处理其余的工作。幸运的是,杰克逊有两个注释@JsonManagedReference和@JsonBackReference来告诉对象映射器有关该关系的信息。更新的代码-

User.java

@Data@Entity@Table(name = "users", uniqueConstraints={ @UniqueConstraint(columnNames={"username"})})public class User {    @Id    @CustomEmailValidator    @Size.List ({ @Size(min=5, message="The field must be at least {min} characters"), @Size(max=100, message="The field must be less than {max} characters")    })    private String username;    @Basic    @Column(name = "enabled", columnDefinition = "BIT", length = 1)    private boolean enabled;    @@JsonManagedReference    @oneToMany(cascade = {CascadeType.ALL,CascadeType.PERSIST,CascadeType.MERGE}, mappedBy = "user")    @Column(nullable = false)    private List<Authority> authorities = new ArrayList<>();}

Authority.java

@Data@Entity@Table(name ="authorities")public class Authority {    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private Long id;    @Version    private Integer version;    @NotNull    @Size.List ({ @Size(min=5, message="The field must be at least {min} characters"), @Size(max=100, message="The field must be less than {max} characters")    })    private String authority;    @JsonBackReference    @ManyToOne(fetch = FetchType.EAGER)    @JoinColumn(name = "username", nullable=false)    private User user;}

还有一点,如果我们使用

Set<>
而不是
List<>
来保存子对象,则应按此处所述正确更改equals和哈希码方法-使用java.util.Set时的Jackson错误(或功能!?)-mySet.size()始终为1



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号