hibernate 自身管理配置实例
在数据库设计中,我们常碰到一些表,它们管理自身。例如栏目,有子栏目,通常表中有个关联父级栏目的字段。在hibernate 配置中我们通常可以当作关联的不同表来处理。
表 DDL代码:
CREATE TABLE `tch_pinggu_column` ( `CID` int(11) NOT NULL AUTO_INCREMENT COMMENT '栏目ID', `CNAME` varchar(32) DEFAULT '', `CTYPE` tinyint(1) DEFAULT '0' COMMENT '0 上传,1 自动统计', `CSORT` tinyint(2) DEFAULT '0' COMMENT '栏目排序', `CDESC` varchar(256) DEFAULT '' COMMENT '主栏目描述', `CAID` int(11) DEFAULT '0' COMMENT '所属评估id', `CPARENT` int(11) DEFAULT '0' COMMENT '父级栏目id', PRIMARY KEY (`CID`) ) ENGINE=MyISAM AUTO_INCREMENT=131 DEFAULT CHARSET=gbk;hibernate 配置:
<hibernate-mapping> <class name="com.bzt.pinggu.bo.PingGuColumn" table="tch_pinggu_column"> <id name="cid" type="java.lang.Integer"> <column name="CID" /> <generator class="native"></generator> </id> <property name="name" type="java.lang.String"> <column name="CNAME" length="32"> <comment>栏目名称</comment> </column> </property> <property name="type" type="java.lang.Short"> <column name="CTYPE"> <comment>0 上传,1 收集</comment> </column> </property> <property name="sort" type="java.lang.Short"> <column name="CSORT"> <comment>排序</comment> </column> </property> <property name="areaid" type="java.lang.Integer"> <column name="CAID"> <comment>栏目状态 0不可用 1可用</comment> </column> </property> <property name="desc" type="java.lang.String"> <column name="CDESC" length="128"> <comment>栏目描述</comment> </column> </property> <many-to-one name="parent" class="com.bzt.pinggu.bo.PingGuColumn" fetch="select"> <column name="CPARENT" /> </many-to-one> <set name="childs" cascade="save-update" inverse="true"> <key> <column name="CPARENT" /> </key> <one-to-many class="com.bzt.pinggu.bo.PingGuColumn" /> </set> </class> </hibernate-mapping>
Bo 类:
public class PingGuColumn extends BaseObject implements Serializable,Cloneable{ private static final long serialVersionUID = 1L; private Integer cid; private String name; private Short type; private Short tableType; private String desc; private String childDesc; private Integer areaid; private Short sort; private PingGuColumn parent; private Set<PingGuColumn> childs = new HashSet<PingGuColumn>(); ...//getter ,setter }