JPA一对多映射相关例子以及查找注意事项

发布于 2012-05-06 | 更新于 2020-09-20

JPA一对多映射例子,两边配置:

拥有mappedBy注解的实体类为关系被维护端,另外的实体类为关系维护端的。顾名思意,关系的维护端对关系(在多对多为中间关联表)的CRUD做操作。关系的被维护端没有该操作,不能维护关系。

//被维护端注解

User:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = “creater”)
private Set albums;

//维护段注解:

Album:

@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = false)
@JoinColumn(name = “user_id”)
private User creater;

(这种配置在从Album端查询所有的Album时会产生数据的无限循环获取,造成笛卡尔积重复。因为每个Album中包含了creater,而creater中又有一个Album集合。。。)

mappedBy表明由第二个所在的类维护关系,。 如何反转?mappedBy相当于inverse=“true”;如果想让第一个维护,可以不写这个,按照如下配置:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set albums;

删除第二个类中的creater。

这时会生成一张中间表用于维护关系。

本文作者: arthinking

本文链接: https://www.itzhai.comjpa-to-many-mapping-of-relevant-examples-and-find-note.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。