表是many-to-one的
在Action中,
SchoolsForm schoolsForm = (SchoolsForm) form;
SchSchool sc=new SchSchool();
我要把sc.setSchUnit(schoolsForm.getXXDM());
在这里setSchUnit会出错。。因为setSchUnit的类型在的那里AbstractSchSchool这里是private SchUnit schUnit;这种类型的,
而schoolsForm.getXXDM()是String类型的,,一放下去就错了,。。
高手们帮帮忙555
映射文件也发出来看看吧
<hibernate-mapping>
    <class name="hibernates.SchSchool" table="SCH_SCHOOL" schema="dbo" catalog="schools">
        <id name="schId" type="java.lang.String">
            <column name="SCH_ID" length="32" />
            <generator class="assigned" />
        </id>
        <many-to-one name="dmYxsbb" class="hibernates.DmYxsbb" fetch="select">
            <column name="YXSBBM" length="1" />
        </many-to-one>
        <many-to-one name="schUnit" class="hibernates.SchUnit" fetch="select">    就是这里了。
            <column name="XXDM" length="5" />
        </many-to-one>
        <many-to-one name="dmYxslb" class="hibernates.DmYxslb" fetch="select">
            <column name="YXSLBM" length="1" />
        </many-to-one>
        <property name="schName" type="java.lang.String">
            <column name="SCH_NAME" length="60" not-null="true" />
        </property>
        <property name="yxsywmc" type="java.lang.String">
            <column name="YXSYWMC" length="180" />
        </property>
        <property name="yxsjc" type="java.lang.String">
            <column name="YXSJC" length="20" />
        </property>
        <property name="jlny" type="java.lang.String">
            <column name="JLNY" length="6" />
        </property>
        <property name="xzfzr" type="java.lang.String">
            <column name="XZFZR" length="30" />
        </property>
        <property name="dwfzr" type="java.lang.String">
            <column name="DWFZR" length="30" />
        </property>
        <set name="schClasses" inverse="true">
            <key>
                <column name="SCH_ID" length="32" not-null="true" />
            </key>
            <one-to-many class="hibernates.SchClass" />
        </set>
        <set name="eduClassSets" inverse="true">
            <key>
                <column name="SCH_ID" length="32" />
            </key>
            <one-to-many class="hibernates.EduClassSet" />
        </set>
        <set name="tchTeachers" inverse="true">
            <key>
                <column name="SCH_ID" length="32" not-null="true" />
            </key>
            <one-to-many class="hibernates.TchTeacher" />
        </set>
        <set name="pubSchTerms" inverse="true">
            <key>
                <column name="SCH_ID" length="32" not-null="true" />
            </key>
            <one-to-many class="hibernates.PubSchTerm" />
        </set>
        <set name="stuStudents" inverse="true">
            <key>
                <column name="SCH_ID" length="32" not-null="true" />
            </key>
            <one-to-many class="hibernates.StuStudent" />
        </set>
        <set name="schZxsjs" inverse="true">
            <key>
                <column name="SCH_ID" length="32" />
            </key>
            <one-to-many class="hibernates.SchZxsj" />
        </set>
        <set name="schZies" inverse="true">
            <key>
                <column name="SCH_ID" length="32" />
            </key>
            <one-to-many class="hibernates.SchZy" />
        </set>
        <set name="schSubjectTeams" inverse="true">
            <key>
                <column name="SCH_ID" length="32" not-null="true" />
            </key>
            <one-to-many class="hibernates.SchSubjectTeam" />
        </set>
        <set name="sysSchRoles" inverse="true">
            <key>
                <column name="SCH_ID" length="32" not-null="true" />
            </key>
            <one-to-many class="hibernates.SysSchRole" />
        </set>
    </class>
</hibernate-mapping>

解决方案 »

  1.   

    请问你发到这里来干嘛,这里不是web区
      

  2.   

    你需要new一个SchUnit啊
    SchUnit n = new SchUnit();
    n.setXXX(from.getXXX());
    sc.setSchUnit(n);
      

  3.   

    AWUSOFT 说的就可以,楼主可以试一下
      

  4.   

    你需要new一个SchUnit啊
    SchUnit n = new SchUnit();
    n.setXXX(from.getXXX());
    sc.setSchUnit(n);
    直接把n放到sc.setSchUnit这里的只会把地址传过去而已,,而我在控制台打n也只会打出hibernates.SchUnit@f889c8,
    再次指教
      

  5.   

    你在控制台只打印n当然是hibernates.SchUnit@f889c8 对象的字符串表现形式
    你可以打印n.getXXX()就会出n的属性了
      

  6.   

    你程序里如果没有重载toObject(),当然会打出这些了,要象7楼说的那样,才能得到属性啊
      

  7.   

    你需要new一个SchUnit啊
    SchUnit n = new SchUnit();
    n.setXXX(from.getXXX());
    sc.setSchUnit(n); 
    但是如果我把n.getXXX放到sc.setSchUnit()就会出错啊,,如果只放个n又接不到from.getXXX()里的值。
    怎么做呢,各位老大们
      

  8.   

    SchUnit n = new SchUnit(); 
    n.setXXX(from.getXXX()); 
    sc.setSchUnit(n);
    不知道你做了关联操作没有,你想以那张表为主呀,不明白,如果就是当前的这张表了
    <hibernate-mapping> 
        <class name="hibernates.SchSchool" table="SCH_SCHOOL" schema="dbo" catalog="schools" cascade="all">
    加上这么一句话“cascade="all"”应该就可以把两张表的数据都加进去了
      

  9.   

    <many-to-one name="schUnit" class="hibernates.SchUnit" fetch="select" cascade="all">    就是这里了。 
                <column name="XXDM" length="5" /> 
    我加错了