1.
//@OneToMany(cascade={CascadeType.REFRESH,CascadeType.MERGE},fetch = FetchType.LAZY, mappedBy = "industry") 这里的一对多必须设置@JoinColumn跟多对一里的字段一致,而不设置mappedBy。
@OneToMany(cascade={CascadeType.REFRESH,CascadeType.MERGE},fetch = FetchType.LAZY)
@JoinColumn(name = "INDUST_ID")
private Set<Sup> sups = new HashSet<Sup>(0);
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "INDUST_ID")
private Industry industry;//
这样在删除industry时才会级联设置 sup里面的indust_id这个字段为空,也就是去掉关联了,才删除得了industry.
2.
以下是多对多
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.REFRESH},fetch=FetchType.LAZY)
@JoinTable(name="ES_C_PRO_ES_C_SPEC",inverseJoinColumns={@JoinColumn(name="CSPECS_SPEC_ID")},joinColumns={@JoinColumn(name="ES_C_PRO_CPRO_ID")})
private Set<Cspec> cspecs = new HashSet<Cspec>(0);// 规格
@ManyToMany(cascade={CascadeType.REFRESH,CascadeType.MERGE},fetch=FetchType.LAZY)
@JoinTable(name="ES_C_PRO_ES_C_SPEC",inverseJoinColumns={@JoinColumn(name="ES_C_PRO_CPRO_ID")},joinColumns={@JoinColumn(name="CSPECS_SPEC_ID")})
private Set<Cpro> cpros=new HashSet<Cpro>(0);//有哪些产品是用这个规格的
这里多对多里面两方都一定要设置@JoinTable inverseJoinColumns.......这一整句,这样在双方删除时才会把关联表里的记录给删掉,去掉关联后才能正常删除。