JPA一对多关系

2018-06-08  本文已影响0人  关外野游

在一对多的关系中,一是关系维护端(inverse side),多是关系被维护端(owner side)。

fetch (fetch = FetchType.LAZY)

属性是该实体的加载方式,FetchType是枚举类型,值有两种:LAZY和EAGER。

mappedBy (mappedBy = "properties")

属性用于双向关联实体时使用,用在关系的维护端指定关系的被维护端。
用在多的一方:@OneToMany(mappedBy = "properties")

orphanRemoval(boolean orphanRemoval() default false;)

属性作用是删除孤立记录,即外键为空的类型,默认为false。该属性为true时会根据外键执行级联删除,因为当你删除productType的记录时,会使product表的记录外键被删除变为孤立记录,该属性进而将孤立记录删除掉。但jpa实际执行的语句是先删除product表中的记录,后删除productType表中的记录。

cascade(CascadeType[] cascade() default {};)

级联属性,默认为空。该属性其实是一个值为枚举类型CascadeType的数组,在jpa的CascadeType枚举类型里面。

配置示例

以下配置会在Employee表中生成外键 store_id

public class Store {
  @Id
  private String id;
  private String name;

  @OneToMany(cascade = CascadeType.REMOVE, mappedBy = "store")
  List<Employee> employeeList;
}

public class Employee  {
  @Id
  private String id;
  private String name;

  @ManyToOne
  private Store store;
}
上一篇 下一篇

猜你喜欢

热点阅读