您的位置:首页 > 其它

关于hibernate的级联删除

2015-06-12 10:39 211 查看
这里小编是用注解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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: