关于hibernate的级联删除

本文介绍了一个使用Hibernate框架实现的级联删除案例。在一个项目计划模型中通过CascadeType.ALL配置实现父节点及其所有子节点的级联删除。文章强调了在进行删除操作时必须使用Hibernate事务来确保级联操作正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里小编是用注解cascade = CascadeType.ALL配的

下面是我做的一个ext的edittree中,一个删除操作, 下面是用到的模型, 当然只保留了一部分字段。
(数据中是没有children字段的。这部分不用管,这只是edittree中需要的。)

注意:当在action中删出的时候,一定要用hibernate自带的事物执行语句才能执行级联删除,否则是不会实现级联删除的。

/**
*模型
/
public class ProjectPlanBaseinfo implements Serializable {
    private static final long serialVersionUID = 1L;

    @ColumnCNName("主键")
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(unique=true, nullable=false, precision=19)
    private Long id;

    @Temporal( TemporalType.DATE)
    @Column(name="OPERATE_TIME")
    private Date operateTime;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "PARENT_ID")
    private ProjectPlanBaseinfo parent;

    @Column(name = "THE_SORT")
    private Integer theSort;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "parent")
    @Fetch(FetchMode.JOIN)
    @BatchSize(size=300)
    @OrderBy(" theSort asc")

    //下边的缓存注解应该去掉,
    //如果不去掉的话,新增子节点后,刷新不会查询子节点
    //@Cache(usage = //CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<ProjectPlanBaseinfo> children = new HashSet<ProjectPlanBaseinfo>(0);

    public ProjectPlanBaseinfo() {
    }

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @JSON(format="yyyy-MM-dd")
    public Date getOperateTime() {
        return this.operateTime;
    }

    public void setOperateTime(Date operateTime) {
        this.operateTime = operateTime;
    }


    public ProjectPlanBaseinfo getParent() {
        return parent;
    }

    public void setParent(ProjectPlanBaseinfo parent) {
        this.parent = parent;
    }

    public Set<ProjectPlanBaseinfo> getChildren() {
        return children;
    }

    public void setChildren(Set<ProjectPlanBaseinfo> children) {
        this.children = children;
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值