设置一下 cascade属性为: cascade="all" 试试看;
 <set name="defectCategories" inverse="true" cascade="all">

解决方案 »

  1.   

    你用预先抓取策略,如下改写:<?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
        
    <hibernate-mapping><class 
        name="cattsoft.uci.ejb.po.DefectCategory" 
        table="DEFECT_CATEGORY"
       lazy="false"
    >    <id
            name="dcid"
            type="java.lang.Integer"
            column="DCID"
        >
            <generator class="assigned" />
        </id>    <property
            name="name"
            type="java.lang.String"
            column="NAME"
            not-null="true"
            length="64"
        />    <!-- associations -->
        <!-- bi-directional one-to-many association to DefectCategory -->
        <set
            name="defectCategories"
            lazy="false"
            inverse="true"
        >
            <key>
                <column name="PARENT_DCID" />
            </key>
            <one-to-many 
                class="cattsoft.uci.ejb.po.DefectCategory"
            />
        </set>
        <!-- bi-directional many-to-one association to DefectCategory -->
        <many-to-one
            name="defectCategory"
            class="cattsoft.uci.ejb.po.DefectCategory"
            not-null="true"
            fetch="join"
        >
            <column name="PARENT_DCID" />
        </many-to-one>
        <!-- bi-directional one-to-many association to Qualitydefect -->
        <set
            name="qualitydefects"
            lazy="true"
            inverse="true"
        >
            <key>
                <column name="DCID" />
            </key>
            <one-to-many 
                class="cattsoft.uci.ejb.po.Qualitydefect"
            />
        </set></class>
    </hibernate-mapping>