hibernate 自身管理配置实例 - 点滴记忆*记忆点滴
收藏本站

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 
        
}

    

    留下足迹