+----+-----------+----------------------+-------------------------+------------+
| id | reAccount | retime               | recontent               | article_id |
+----+-----------+----------------------+-------------------------+------------+
|  1 |         0 | 2009年08月28日 星期5 | <p>this is content.</p> |       NULL |
|  2 |         1 | 2009年08月28日 星期5 | 1111                    |       1    |
|  3 |         1 | 2009年08月28日 星期5 | 1111                    |       1    |
+----+-----------+----------------------+-------------------------+------------+
注:article_id是表Article的外键我想插入一个新的数据时 把上面的内容不变 但是每次新插入的内容会顶掉原来的article_id
使原来的article_id变为null// 得到当 id=1 时的articles
String sql = "from Article a where a.id = " + id;
List articles = session.createQuery(sql).list();
Iterator iter = articles.iterator();
if(iter.hasNext()){
article = (Article)iter.next();
}// 查 article_id=1 的restores
String restoreSql = "select * from t_restore where article_id =" + id;
List restores = session.createSQLQuery(restoreSql).addEntity(Restore.class).list();
Iterator re_iter = restores.iterator();
Restore restoreAll = null;
if(re_iter.hasNext())
{
restoreAll = (Restore)re_iter.next();
}// 新插入的数据
Restore restore = new Restore();
restore.setXXX...
然后通过HashSet存 但是还是没得到想要的结果 希望能指点下 谢谢

解决方案 »

  1.   

    双向关联中在set中必须设置inverse="true" 反转 
    强制在一端进行维护
    否则修改父记录时,子记录中的相应的PID会同时修改成null
      

  2.   

    如果设置了inverse="true" 不能用HashSet来保存数据
      

  3.   

        <many-to-one column="pid" access="field" name="parent"/>
        
        <set access="field" name="Children" inverse="true">
          <key column="pid"/>
          <one-to-many class="com.oa.model.Organization"/>
        </set>