把cascade="none"设置成cascade="save-update"试试

解决方案 »

  1.   

    TUser.hbm.xml:
    <set name="addresses" table="T_Address" lazy="false" inverse="false" cascade="all">
      

  2.   

    用user插入
    Set set = new HashSet();
    set.add(new TAddress());
    set.add(new TAddress());
    set.add(new TAddress());
    set.add(new TAddress());
    user.setAddresses(set);
    session.save(user);
      

  3.   

    试过了,还是不行
    下面是出现的hibernate,sql语句:
    Hibernate: select tuser0_.id as id1_0_, tuser0_.name as name1_0_, tuser0_.age as age1_0_, tuser0_.group_id as group4_1_0_ from Sample.dbo.T_User tuser0_ where tuser0_.id=?
    Hibernate: select addresses0_.user_id as user4_1_, addresses0_.id as id1_, addresses0_.id as id0_0_, addresses0_.zipcode as zipcode0_0_, addresses0_.tel as tel0_0_, addresses0_.user_id as user4_0_0_ from Sample.dbo.T_Address addresses0_ where addresses0_.user_id=?
      

  4.   

    关联字段搞错了吧  <set name="addresses" table="T_Address" lazy="false" inverse="true" cascade="all">
            <key column="user_id"></key>  //  user_id 应为 id
            <one-to-many class="com.TAddress"/>
            </set>  <many-to-one name="user"
            class="com.TUser"
            cascade="none"
            column="user_id"   //此处user_id 应为 id
            insert="true"
            update="true"
            outer-join="auto"
            access="property"
            />