1的一端,如果使用了mappedBy属性,则不能再使用JoinColumn属性
// @JoinColumn(name="customer_id")
@OneToMany(fetch=FetchType.EAGER,cascade={CascadeType.REMOVE},mappedBy="customer")
public Set<Order> getOrders() {
return orders;
}
public void setOrders(Set<Order> orders) {
this.orders = orders;
}
TestPersist时,先保存1的一端,让n的一端去维护关联关系,可以减少update,提高效率
//若是双向1-n的关联关系,执行保存时
//若先保存n的一端,再保存1的一端,则会多出许多update语句
//若是先保存1的一端,则只会出现少量update语句
//推荐:在进行双向-n关联关系时,使用n的一端来维护关联关系,而1的一端不维护关联关系,这样可以有效减少SQL语句
//注意:若在1的一端的@OneToMany中使用mappedBy属性时,则1的一端也不能再使用@joincolumn属性
@Test
public void testOneToManyPersist(){
Customer customer = new Customer();
customer.setAge(12);
customer.setLastname("jiangli");
Order o1=new Order();
o1.setOrdername("AAA");
Order o2=new Order();
o2.setOrdername("BBB");
//建立关联关系
customer.getOrders().add(o1);
customer.getOrders().add(o2);
o1.setCustomer(customer);
o2.setCustomer(customer);
//执行保存操作
entityManager.persist(customer);
entityManager.persist(o1);
entityManager.persist(o2);
}