先上实体类
serviceView实体
@Entity
@Table(name = "service_view")
public class ServiceView implements Serializable{
@Column(name = "name", length = 50)
private String name;
@OneToMany(mappedBy = "serviceView",fetch=FetchType.LAZY,cascade={CascadeType.REMOVE})
private Set<ServiceNode> serviceNodes=new HashSet<ServiceNode>();
//省略get、set方法
}
serviceNode实体:
@Entity
@Table(name = "service_node")
public class ServiceNode implements Serializable{
@Column(name="x")
private Integer x;
@Column(name="y")
private Integer y;
@ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE})
@JoinColumn(name="service_id",insertable=false,updatable=false)
private ServiceView serviceView;
@Column(name="service_id")
private String serviceId;
//省略get,set方法
}
这时候执行一个删除serviceView的对象,不能级联删除相关的serviceNode对象。
service.delete(serviceView);
但是我与不想使用FetchType.All,或者FetchType.EAGER
不知道为什么。
现在只能费劲点,去掉外键Id字段,改为:
@ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.REMOVE})
@JoinColumn(name="service_id")
private ServiceView serviceView;
谁有好的方法,可以分享一下