for(int i=0;i<4;i++) {
c= new Child();
c.setTname(name);
p.getChilds().add(c);
c.setParent(p);
}
这样试试

解决方案 »

  1.   

    c.setParent(p);
    已经试过了,不行
      

  2.   

    id加上unsaved-value="0",我想应该就可以了吧。
      

  3.   

    把inverse="false" 时输出结果
    ====================================
    Hibernate: insert into Parent (age, firstname, lastname, id) values (?, ?, ?, ?)
    Hibernate: insert into Child (tNAME, pID, id) values (?, ?, ?)
    Hibernate: update Child set pID=? where id=?
    增加unsaved-value="0"或unsaved-value="-1" 时输出结果
    <id name="id" column="id" type="long" unsaved-value="-1"> 两个地方都加了
    ====================================
    Hibernate: insert into Parent (age, firstname, lastname, id) values (?, ?, ?, ?)
    Hibernate: insert into Child (tNAME, pID, id) values (?, ?, ?)
      

  4.   

    这我就不明白你的意思了,看你贴出来的结果,不是已经达到你的要求了吗?同时插入parent和child。你inverse="false"多出的update是因为你用父和和子做关联,控制方在父,而父不知道又多少个子,所以要更新每个子的那个Pid,这也是为什么inverse="false"影响效率的原因。你上面的结果想告诉我什么呢?
      

  5.   

    Child c ;
    for(int i=0;i<4;i++) {
       c= new Child();
       c.setTname(name);
       p.getChilds().add(c);
    }
    s.save(p);
    ==============
    我增加了4条child记录,但为什么只有一条记录添加到数据库?
      

  6.   

    呵呵,因为你用了inverse="true"啊,这是由子来控制关联关系,所以你应该用s.save(子)才行啦。确切的说要save四个子才行。
    总之,inverse这个东西的含义你必须要弄清楚才行,而且反转的时候要多写一个c.setParent(p)这个代码,也就是双方都要进行一下维护才行。
      

  7.   

    把inverse="false" 时输出结果
    ====================================
    Hibernate: insert into Parent (age, firstname, lastname, id) values (?, ?, ?, ?)
    Hibernate: insert into Child (tNAME, pID, id) values (?, ?, ?)
    Hibernate: update Child set pID=? where id=?
    增加unsaved-value="0"或unsaved-value="-1" 时输出结果
    <id name="id" column="id" type="long" unsaved-value="-1"> 两个地方都加了
    ====================================
    Hibernate: insert into Parent (age, firstname, lastname, id) values (?, ?, ?, ?)
    Hibernate: insert into Child (tNAME, pID, id) values (?, ?, ?)
      

  8.   

    为什么要用cascade="all"呢?
    delete不行?
    然后inverse="true",做一个Child的DAO不行吗?
    你这样严重影响效率!