FetchType的预设值:
@Basic | FetchType.EARGE |
@OneToOne | FetchType.EARGE |
@ManyToOne | FetchType.EARGE |
@OneToMany | FetchType.LAZY |
@ManyToMany | FetchType.LAZY |
提示:即使标注为 FetchType.LAZY,但它只作为建议,真实为FetchType.EAGER。
CascadeType.PERSIST只有A类新增时,会级联B对象新增。若B对象在数据库存(跟新)在则抛异常(让B变为持久态)
CascadeType.MERGE指A类新增或者变化,会级联B对象(新增或者变化)
CascadeType.REMOVE只有A类删除时,会级联删除B类;
CascadeType.ALL包含所有; CascadeType.REFRESH没用过。 综上:大多数情况用CascadeType.MERGE就能达到级联跟新又不报错,用CascadeType.ALL时要斟酌下CascadeType.REMOVE