当懒加载时,看似级联删除和insertable=false同时使用,级联删除不起作用
当懒加载时,貌似级联删除和insertable=false同时使用,级联删除不起作用
先上实体类
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;
谁有好的方法,可以分享一下