hibernate在没有外键约束的条件下怎样进行级联删除?

ruanwxh 2011-10-05 12:19:53
刚用hibernate作持久层,对这个并不熟悉。求高手帮助?
映射文件如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.ffcs.cip.entity.ShopDict" table="cip_shop_dict">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="parent" class="com.ffcs.cip.entity.ShopDict" column="parent_id" />
<property name="name" type="java.lang.String">
<column name="name" length="50" />
</property>
<property name="orderId" type="java.lang.Integer">
<column name="order_id" />
</property>
<set name="childs" inverse="true" cascade="all-delete-orphan" lazy="true" table="cip_shop_dict">
<key column="parent_id"/>
<one-to-many class="com.ffcs.cip.entity.ShopDict"/>
</set>
</class>
</hibernate-mapping>

数据库设计如下:
create table dict
(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父ID',
`name` varchar(50) DEFAULT NULL COMMENT '字典名称',
`order_id` int(11) DEFAULT NULL COMMENT '排序',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
...全文
1145 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruanwxh 2011-10-06
  • 打赏
  • 举报
回复
照着网上试了几个例子,发现没有外键,好像是无法做级联删除。先结贴了。
niuniu20008 2011-10-05
  • 打赏
  • 举报
回复
代码呢?
ruanwxh 2011-10-05
  • 打赏
  • 举报
回复
实体类

package com.ffcs.cip.entity;



import java.io.Serializable;
import java.util.Set;

/**
*
* 店铺字典信息
* @Copyright: Copyright (c) 2011 FFCS All Rights Reserved
* @Company: 北京福富软件有限公司
* @author 阮张忠 2011-09-26
* @version 1.00.00
* @history:
*
*/
public class Dict implements Serializable{

private static final long serialVersionUID = -3046741248076639964L;

public Dict() {
}

public Dict(Integer id, ShopDict parent, String name, Integer orderId) {
this.id = id;
this.parent = parent;
this.name = name;
this.orderId = orderId;
}

/**
* 主键
*/
private Integer id;

/**
* 父节点
*/
private ShopDict parent;

/**
* 字典名称
*/
private String name;

/**
* 排序
*/
private Integer orderId;

/**
* 子节点集
*/
private Set<ShopDict> childs;


public Integer getId() {
return id;
}

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

public ShopDict getParent() {
return parent;
}

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

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getOrderId() {
return orderId;
}

public void setOrderId(Integer orderId) {
this.orderId = orderId;
}

public Set<ShopDict> getChilds() {
return childs;
}

public void setChilds(Set<ShopDict> childs) {
this.childs = childs;
}

}

DAO层

@Override
public void deleteById(Integer id) {
if ( id == null || id < 1 ) {
return;
}
StringBuilder hql=new StringBuilder("delete ShopDict bean where bean.id=:id");
Query query = this.getSession().createQuery(hql.toString());
query.setInteger("id", id);
query.executeUpdate();
}

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧