Hibernate OneToMany中的mappedBy

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这个属性,则会产生三张表,一张表是用来管理这两张表的,如 主键中mappedBy的具体使用及其含义
 

猜你喜欢

转载自josh-persistence.iteye.com/blog/1986906
今日推荐