@OneToMany mappedBy

本文深入解析了Java中mappedBy属性在实体类间双向关联时的使用方式,通过实例代码展示了如何正确配置mappedBy以优化数据操作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想很多人都曾经被mappedBy这个属性头大过,网上的说的十个九个抄我是没看明白什么意思。
现在我来说说我的理解

@Entity
@Table
public class Department implements java.io.Serializable {

// Fields
@Id
private Long depid;
private String depname;
@OneToMany(mappedBy="department")
private Set<Employee> employees = new HashSet<Employee>();


public class Employee implements java.io.Serializable {

// Fields
@Id
private Long eeid;
private String eename;
@Column(name="dep_id",insertable=false,updatable=false)
private Long depId;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="dep_id")
private Department department;

mappedby用于指定在双向关联中,两个实体对象,哪一个是能被关联处理的
而 mappedby指向的对象就是被关联处理的对象。

如果 mappedby指向 Employee 那么修改一个 Department 部门对象要修改多个Employee那个很麻烦;所以我们一般都指定 mappedby Department 也就是当修改Employee 关联修改 Department 这样的代价是最小的

@OneToMany(mappedBy="department")
private Set<Employee> employees = new HashSet<Employee>();
意思 employees中的每一个 Employee mappedBy department
(该字段是多端Employee中的 private Department department; )
中文理解就是 对employees对象中的属性department将发生映射
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值