hibernate的xml 文件的影射配置没有配置好问一下,student_course表的cnum字段是不是对应course表的cnum必须是主键??
_________________
是的
如果我把course的id字段设置成主键,怎么显示的Sql语句中是student_course表的cnum字段与course表的id字段对应了???
____________
影射文件配置上处理
  当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'course' 中的标识列插入显式值。。
__________________
你的语句中是不是向自增列赋值了? 
插入数据的时候不要为id列指定值

解决方案 »

  1.   

    首先谢谢楼上给的答复,不过我还是不太明白,在向course表中添加数据时,只是在界面中输入了cnum,cname,xuefen,xingzhi,season几项,总是报 : 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'course' 中的标识列插入显式值。。
    Course.hbm.xml如下:
    <hibernate-mapping>
        <class name="shsc.lbh.vo.Course" table="course" schema="dbo" catalog="selectCourseDatabase">
            <id name="cnum" type="java.lang.String">
                <column name="cnum" length="30" />
                <generator class="native" />  //cnum设成主键,下面的id岂不是没有用处了,它设成native,难道说不能给它附值码???
            </id>
            <property name="id" type="java.lang.Integer">
                <column name="id" not-null="true" />
            </property>
            <property name="cname" type="java.lang.String">
                <column name="cname" length="20" not-null="true" />
            </property>
            <property name="xuefen" type="java.lang.Float">
                <column name="xuefen" precision="53" scale="0" />
            </property>
            <property name="xingzhi" type="java.lang.String">
                <column name="xingzhi" length="10" />
            </property>
            <property name="season" type="java.lang.String">
                <column name="season" length="10" />
            </property>
              <set
                name="studentcourse"
                table="student_course"
                inverse="false"
                lazy="true"
                sort="unsorted"
                cascade="all"
            >
                <key column="cnum"></key>
                <one-to-many
                      class="shsc.lbh.vo.StudentCourse"
                />
             </set>
        </class>
    </hibernate-mapping>
    StudentCourse.hbm.xml如下:
    <hibernate-mapping>
        <class name="shsc.lbh.vo.StudentCourse" table="student_course" schema="dbo" catalog="selectCourseDatabase">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="native" />
            </id>
            <property name="score" type="java.lang.Float">
                <column name="score" precision="53" scale="0" />
            </property>
              <many-to-one 
              name="student"
              class="shsc.lbh.vo.Student"
              column="snum"
              cascade="all"
            />
             <many-to-one 
              name="course"
              class="shsc.lbh.vo.Course"
              outer-join="auto"
              column="cnum"
              cascade="all"
            />
        </class>
    </hibernate-mapping>
      

  2.   

    不知道你为什么这样配置,student_course表应该是保存student表跟course表多对多关系的.那么不应该有student_course这个实体及其映射.而应该在student映射里增加many-to-many映射至course.同样的,在course映射里增加many-to-many