hibernate @MappedBy

还是inverse好用.

一个双向关系的反向端(被拥有方)(如:DepartmentInfo)必须是通过使用OneToOne,OneToMany或ManyToMany注解的mappedBy元素指向其拥有方(如:UserInfo)。该mappedBy元素指定的实体(关系的所有者)的属性或字段(如:UserInfo的字段departmentInfo)。
example:
@Entity
@Table(name = "userInfo", schema = "dbo", catalog = "oa", uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class UserInfo implements java.io.Serializable {
private Integer userId;

private DepartmentInfo departmentInfo;
//other field

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "departmentId", nullable = false)
public DepartmentInfo getDepartmentInfo() {
return this.departmentInfo;
}

//other getter setter
}

@Entity
@Table(name = "departmentInfo", schema = "dbo", catalog = "oa")
public class DepartmentInfo implements java.io.Serializable {
private Integer departmentId;
private Set<UserInfo> userInfos = new HashSet<UserInfo>(0);
//other field
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departmentInfo")
public Set<UserInfo> getUserInfos() {
return this.userInfos;
}
//other getter setter
}


一个双向关系的反向端(被拥有方)必须是通过使用OneToOne,OneToMany或ManyToMany注解的mappedBy元素指向其拥有方。该mappedBy元素指定的实体(关系的所有者)的属性或字段。
换句话讲:双向关系的拥有方默认是指向被拥有方的,这样默认是不需要mappedBy元素来指定.同时这样的默认会再被拥有方使用mappedBy元素后失效(即由mappedBy指定).

在 one-to-many / many-to-one的双向的关系中many方[color=darkred]必须[/color]是关系的所有方,因此mappedBy元素不能在many-to-one中使用(指明)(规定).

对于一对一的双向关系,拥有方是(与...相一致)包含相应的外键的一方。

对于many to many的双向关系的双方都可以是拥有方。

mappedBy跟JoinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义的JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表;

又糊涂了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值