**********************************************这里是eventinfo.xml映射表,一个对应多个eventdate映射表<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.palmcity.model.Eventinfo" table="EVENTINFO" schema="TRAFFICS">
        <id name="eventid" type="java.lang.Long">
            <column name="EVENTID" precision="24" scale="0" />
            <generator class="sequence">
            <param name="sequence">SEQUENCES_EVENTINFOID</param> 
             </generator>
        </id>
        <property name="title" type="java.lang.String">
            <column name="TITLE" length="100" />
        </property>
          <property name="eventstype" type="java.math.BigDecimal">
            <column name="EVENTSTYPE" precision="22" scale="0" />
        </property>
        <property name="citycode" type="java.lang.String">
            <column name="CITYCODE" length="10" />
        </property>
        <property name="content" type="java.lang.String">
            <column name="CONTENT" length="1000" />
        </property>
        <property name="re" type="java.lang.String">
            <column name="REMARK" length="1000" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" length="100" />
        </property>
        <property name="stuation" type="java.lang.String">
            <column name="STUATION" length="300" />
        </property>
        <property name="linkid" type="java.math.BigDecimal">
            <column name="LINKID" precision="24" scale="0" />
        </property>
        <property name="roadname" type="java.lang.String">
            <column name="ROADNAME" length="100" />
        </property>
        <property name="direction" type="java.math.BigDecimal">
            <column name="DIRECTION" precision="22" scale="0" />
        </property>
        <property name="type" type="java.math.BigDecimal">
            <column name="TYPE" precision="22" scale="0" />
        </property>
        <property name="eventsource" type="java.lang.String">
            <column name="EVENTSOURCE" length="100" />
        </property>
        <property name="sourceaddress" type="java.lang.String">
            <column name="SOURCEADDRESS" length="100" />
        </property>
        <property name="receivetype" type="java.math.BigDecimal">
            <column name="RECEIVETYPE" precision="22" scale="0" />
        </property>
        <property name="deletelabel" type="java.math.BigDecimal">
            <column name="DELETELABEL" precision="22" scale="0" />
        </property>
        <property name="audittype" type="java.math.BigDecimal">
            <column name="AUDITTYPE" precision="22" scale="0" />
        </property>
        <property name="iscritical" type="java.math.BigDecimal">
            <column name="ISCRITICAL" precision="22" scale="0" />
        </property>
        <property name="harmonychar" type="java.math.BigDecimal">
            <column name="HARMONYCHAR" precision="22" scale="0" />
        </property>
        <property name="auditdate" type="java.util.Date">
            <column name="AUDITDATE" length="7" />
        </property>
        <property name="auditopinion" type="java.lang.String">
            <column name="AUDITOPINION" length="1000" />
        </property>
        <property name="audituserid" type="java.math.BigDecimal">
            <column name="AUDITUSERID" precision="22" scale="0" />
        </property>
        <property name="userid" type="java.math.BigDecimal">
            <column name="USERID" precision="22" scale="0" />
        </property>
        <property name="pid" type="java.math.BigDecimal">
            <column name="PID" precision="22" scale="0" />
        </property>
        <set name="eventdate"  inverse="false"  cascade="all" lazy="false">
            <key>
                <column name="EVENTID" length="36" not-null="true"/>
            </key>
            <one-to-many class="com.palmcity.model.Eventdate" />
        </set>
    </class>
</hibernate-mapping>
******************************************这里是eventDate.xml映射表,非主键eventid和eventinfo表中的主键eventid对应<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.palmcity.model.Eventdate" table="EVENTDATE" schema="TRAFFICS">
        <id name="dateid" type="java.lang.Long">
            <column name="DATEID" precision="22" scale="0" />
            <generator class="sequence">
            <param name="sequence">SEQUENCES_EVENTDATEID</param> 
             </generator>
        </id>
        <property name="starttime" type="java.lang.String">
            <column name="STARTTIME" length="30" />
        </property>
        <property name="endtime" type="java.lang.String">
            <column name="ENDTIME" length="30" />
        </property>
       
        <property name="startdate" type="java.lang.String">
            <column name="STARTDATE" length="30" />
        </property>
        <property name="enddate" type="java.lang.String">
            <column name="ENDDATE" length="30" />
        </property>
        <property name="updatedatetime" type="java.util.Date">
            <column name="UPDATEDATETIME" length="7" />
        </property>
        <property name="eweek" type="java.lang.String">
            <column name="EWEEK" length="200" />
        </property>
        <property name="unknowdate" type="java.lang.String">
            <column name="UNKNOWDATE" length="20" />
        </property>
                <many-to-one name="eventinfo"  class="com.palmcity.model.Eventinfo" cascade="all" fetch="select" >
            <column name="EVENTID" length="36"  />
        </many-to-one>
    </class>
</hibernate-mapping>**********************************************这里是继承hibernate 的HibernateDaoSupport类执行的方法
eventinfo.setEventid(moreeventinfo.getEventid());
eventinfo.setCitycode(moreeventinfo.getCitycode());
....................
getHibernateTemplate().update(eventinfo);
请各位高手帮帮忙,我建立映射表关联是为了在save的时候用,现在我只update  eventinfo这个表的时候怎么才能让eventdate表不update

解决方案 »

  1.   


     <set name="eventdate"  inverse="false"  cascade="all" lazy="false">
                <key>
                    <column name="EVENTID" length="36" not-null="true"/>
                </key>
                <one-to-many class="com.palmcity.model.Eventdate" />
    </set>
    把all换成refesh试试
      

  2.   

    你这个问题没遇到过,但是cascade="all"肯定两边都会更新!
      

  3.   

    可是我更新时为什么eventdate表中数据只更新了一条,其它数据不更新,和eventinfo表中数据属于一对多eventdate关系,更新代码如下 public void saveAuditEventInfo(EventInfoVo moreeventinfo) {
    // TODO Auto-generated method stub
    Eventinfo info = new Eventinfo();
    info.setEventid(moreeventinfo.getEventid());
    info.setCitycode(moreeventinfo.getCitycode());
    info.setType(moreeventinfo.getType());
    info.setTitle(moreeventinfo.getTitle());
    info.setEventstype(moreeventinfo.getEventstype());
    info.setContent(moreeventinfo.getContent());
    info.setStuation(moreeventinfo.getSituation());
    info.setSourceaddress(moreeventinfo.getSituation());
    info.setShorttitle(moreeventinfo.getShorttitle());
    info.setDeletelabel(new BigDecimal(1));
    info.setEventsource(moreeventinfo.getEventsource());
    info.setAudittype(moreeventinfo.getAudittype());
    info.setIscritical(moreeventinfo.getIscritical());
    info.setHarmonychar(moreeventinfo.getHarmonychar());
    info.setAuditdate(new Date());
    info.setAuditopinion(moreeventinfo.getAuditopinion());
    info.setAudituserid(moreeventinfo.getAudituserid());
    info.setUserid(moreeventinfo.getUserid());
    info.setPid(moreeventinfo.getPid());
    Set dates = new HashSet();
    Eventdate infodate = new Eventdate();
    for (int i=0;i<moreeventinfo.getStarttimes().size();i++) {
    infodate.setEnddate(moreeventinfo.getEnddate());
    infodate.setStartdate(moreeventinfo.getStartdate());
    if (moreeventinfo.getEweek() == null
    || moreeventinfo.getEweek().equals("")) {
    infodate.setEweek("WA");
    } else {
    infodate.setEweek(moreeventinfo.getEweek());
    }
    infodate.setUpdatedatetime(new Date());
    infodate.setStarttime(moreeventinfo.getStarttimes().get(i));
    infodate.setEndtime(moreeventinfo.getEndtimes().get(i));
    System.out.println(moreeventinfo.getStarttimes());
    infodate.setEventid(new BigDecimal(moreeventinfo.getEventid()));
    dates.add(infodate);
    break;
    }
    dates.add(infodate);
    info.setEventdate(dates);
    dao.updateEventInfo(info);
    }