TMember.hml.xml       <set name="THotel" table="t_hotel_member" inverse="false" lazy="true" cascade="save-update">
            <key>
                <column name="memberId" not-null="true" />
            </key>
            <many-to-many class="com.tpc.youze.model.po.THotel"  column="hotelId" outer-join="true"/>
        </set>
        <set name="TMember" table="t_hotel_member" lazy="true" inverse="true" cascade="save-update">
            <key>
                <column name="hotelId" not-null="true" />
            </key>
            <many-to-many class="com.tpc.youze.model.po.TMember" column="memberId"/>
        </set>
级联保存可以,删除也可以,但修改的时候出了一个问题,hibernate把hotel和member关系表的记录删除了!
能帮忙看一下?hibernate的执行过程:Hibernate: update database.t_member set memberNumber=?, password=?, memberName=?, job=?, sex=?, paper=?, photo=?, familyAddress=?, officeAddress=?, postalcode=?, moveTel=?, familyTel=?, email=?, qqMsn=?, currentMoney=?, yearMoney=?, sumMoney=?, joinSpend=?, manageSpend=?, basicSpend=?, changeSpend=? where memberId=?Hibernate: delete from t_hotel_member where memberId=?

解决方案 »

  1.   

    我现在有两个表,一个是t_hotel一个是t_member,他们是多对多的关系,关系表是t_hotel_member,把表到成对象后,我在两个对象的配置文件写的内容如上面给的,在操作对象member时,都可以级联保存和删除hotel(主要是在关系表中加入一条关系数据,或者删除一条关系数据),但现在问题是,当我修改一个member时,hibernate却执行了两条sql,一条是更新,一条是删除,如上面给出的,
    问题是为什么会这样?我只要更新member就行了,为什么会关系到关系表??请各位高手出出招!!
      

  2.   

    2楼的方法我试了,不行,执行结果如下:
    Hibernate: insert into yzdatabase.t_member (memberNumber, password, memberName, job, sex, paper, photo, familyAddress, officeAddress, postalcode, moveTel, familyTel, email, qqMsn, currentMoney, yearMoney, sumMoney, joinSpend, manageSpend, basicSpend, changeSpend) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    Hibernate: update yzdatabase.t_hotel set cityId=?, hotelNumber=?, hotelName=?, address=?, linkmen=?, linkmenTEL=?, linkmenFAX=?, linkmenEmail=?, linkmenMoveTEL=?, hotelExplain=?, journey=?, sightName=?, distinction=?, curreMoney=? where hotelId=?
    member修改了,但关系表没有插入新的关系数据,
    在关系表中没有数据!
      

  3.   

    根据ID查询出对象后,不能只对前台要修改的内容返回,还要把关系对象也要查询出来,在update的时候把关系对象set到修改好的对象中去,一起update可能是在update的时候,hibernate会自己到member中去找hotel,如果发现hotel不存在或者为空,但又发现关系表中有一条记录,以为是多的一条记录,所以就自动给删除了!