看看书吧,书上有详解!
栏目相对子栏目一对多的关系 
<set name="fusubject" lazy="true" inverse="true" cascade="delete">
<key column="sjtid"/>
<one-to-many class="com.everyday.vo.TbSubject"/>
</set>
子栏目对应父栏目多对一的关系
<many-to-one name="zisubject" column="sjtid" class="com.everyday.vo.TbSubject" fetch="join" insert="false" update="false">
</many-to-one>

解决方案 »

  1.   

    我给个例子,UserGroup -> User,这是一个一对多:public class UserGroup implements Serializable { private static final long serialVersionUID = -3398843037575843997L;

        public UserGroup() {
            this.users = new HashSet<User>();
        }    ///////////////////////////////////
        // 属性
        ///////////////////////////////////
        
    private Long id;

    private Set<User> users;    ///////////////////////////////////
        // 属性访问器
        ///////////////////////////////////
        
    @Override
    public Long getId() {
    return this.id;
    } @Override
    public void setId(Long id) {
        this.id = id;
    }    /**
         * @return the users
         */
        public Set<User> getUsers() {
            return this.users;
        }    /**
         * @param users the users to set
         */
        @SuppressWarnings("unused")
        private void setUsers(Set<User> users) {
            this.users = users;
        }
    }
    public class User implements Serializable { private static final long serialVersionUID = -1826947173282949005L;

    ///////////////////////////////////
    // 属性
    ///////////////////////////////////

    private Long id;

    /**
     * 指定本用户归属的用户组。
     */
    private UserGroup userGroup; ///////////////////////////////////
    // 属性访问器
    ///////////////////////////////////

    public Long getId() {
    return this.id;
    } public void setId(Long id) {
    this.id = id;
    }    /**
         * @return the userGroup
         */
        public UserGroup getUserGroup() {
            return this.userGroup;
        }    /**
         * @param userGroup the userGroup to set
         */
        public void setUserGroup(UserGroup userGroup) {
            this.userGroup = userGroup;
        }
    }<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="cn.com.gxlu.fiberscheduler.model.user">
        <class name="UserGroup" table="t_UserGroup">
            <id name="id" type="long" column="ID">
                <generator class="native">
                    <param name="sequence">S_FSUSERGROUP</param>
                </generator>
            </id>
            <set name="users" table="t_UserGroup_User" inverse="true" lazy="true">
                <key column="userGroupId" foreign-key="fk_gu_userGroupId"/>
                <many-to-many column="userId" unique="true" class="User" />
            </set>
        </class>
    </hibernate-mapping><?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.com.gxlu.fiberscheduler.model.user">
        <class name="User" table="t_User">
            <id name="id" type="long" column="id">
                <generator class="native">
                    <param name="sequence">S_FSUSER</param>
                </generator>
            </id>
            <join table="t_UserGroup_User" optional="true">
                <key column="userId" foreign-key="fk_gu_userId"/>
                <many-to-one name="userGroup" column="userGroupId" not-null="true" />
            </join>
        </class>
    </hibernate-mapping>
      

  2.   

    例 照片与相册
    照片.hbm
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-access="field">
    <class name="com.element.ElementBase" table="Element">
    <id name="id" column="id" type="long">
    <generator class="assigned" />
    </id> <discriminator column="elementType" type="string" />
    <version name="version" column="version" type="integer" />
    <property name="name" />
    <property name="createdTime" not-null="true" />
    <property name="caption" />
    <property name="description" /> <subclass name="com.file.Photo"
    discriminator-value="photo">
    <many-to-one name="album" column="albumId" />
    </subclass>

    </class>
    </hibernate-mapping>相册
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-access="field">
    <class name="com.folder.FolderBase" table="Folder">
    <id name="id" column="id" type="long">
    <generator class="assigned" />
    </id>
    <discriminator column="folderType" type="string"
    not-null="true" /> <version name="version" column="version" type="integer" />
    <property name="name" />
    <property name="createdTime" not-null="true" /> <property name="caption" />
    <many-to-one name="account" column="accountId" /> <many-to-one name="createdBy" /> <subclass name="com.folder.Album"
    discriminator-value="album">
    <many-to-one name="coverPhoto" column="coverPhotoId" />
    <set name="photos">
    <key column="albumId" />
    <one-to-many class="com.file.Photo" />
    </set>
    </subclass> </class>
    </hibernate-mapping>