刚用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;
映射文件如下:<?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;
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();
}