mappedBy用于指定在双向关系中的两个关联实体中哪个实体是被关联处理的.
?
1、@OneToMany(mapped=“由One的一方指向Many的一方,并且,这个属性应该等于Many的一方中含有One类的属性的属性名,否则会出错啦 ”)
如:一个Class中有多个Students。
?
1)在Class PO中:
@OneToMany(targetEntity=StudentPO.class,mappedBy="myclass",cascade=javax.persistence.CascadeType.ALL)
?
@Cascade(CascadeType.ALL)
?
private Set<StudentPO> studentSet;
?
?
?
2)在StudentPO中:
?
@ManyToOne(targetEntity=ClassPO.class,cascade={CascadeType.ALL})
?
private ClassPO myclass;
?
?
其中ClassPO中的mappedBy= ?StudentPOst中的 ?myclass;
2、@OneToMany里面加入mappedBy?防止生成中间表
使用JPA的时候,如果A B两个实体间是一对多,多对一的关系,如果不在@OneToMany里加入mappedBy属性会导致自动生成一个多余的中间表。比如:
@Entity public class A { @OneToMany(mappedBy="a") public Set<B> bs = new HashSet<B>(0); } @Entity public class B { @ManyToOne public A a; }
这样写会只成生成表A和表B,B中会有一个到表A的外键。但是如果不加mappedBy=”a”, 那么就会再生成一张A_B表。
?
?
在本例中,如果我们没有填mapped这个属性,则会产生三张表,一张表是用来管理这两张表的,如
?
?