源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java Hibernate 一对多自身关联问题

  • 时间:2021-02-27 08:47 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java Hibernate 一对多自身关联问题
Hibernate 一对多自身关联问题  这个很难描述清楚,只能引用CSDN中我提问的帖子了: http://topic.csdn.net/u/20080711/16/7494bf10-48ca-4b2e-8a01-303e647f5516.html 方法,在表单中取得一个PO,然后session.save(po),如下:   程序代码             tx = session.beginTransaction();         session.save(catalog);         tx.commit(); B方法,也是在表单取得一个PO,另外取得一个PO_ID,如下:   程序代码      public void addChildCatalog(int id, Catalog c11) {          Catalog c1 = this.getCatalog(id);          log.info("c11.getId()::"+c11.getId());     c1.getChildCatalogs().add(c11);     c11.setParentCatalog(c1);     Session session = HibernateUtil.getSession();     Transaction tx = session.beginTransaction();     try {         session.save(c1);         session.save(c11);         tx.commit();     } catch (HibernateException e) {         if (tx != null) {         HibernateUtil.rollbackTransaction(tx);         }     } finally {         if (session != null) {         HibernateUtil.closeSession(session);         }     } } 第一个功能,简称A功能,我是为了保存一个顶级菜单,没任何关联的。  第二个功能,B功能,我是为了根据那个父ID来做关联保存。  现在出的问题是:我进入功能页面,使用A功能,正常,再使用A功能,正常,很正常。。。使用N次都没问题。  接着我使用B功能,不停的增加子类,也都正常。。。使用N次都很正常。  注意问题:当我使用过B功能之后,一切就变得不正常了,再使用A功能,相当于和使用B功能一样,还是在做最后一次的B功能操作!加的是子分类。  另外问题:我只能不停的向下延伸子类,无法加入已有同级分类。比如   程序代码 1级 id:1 c_id=null  2级 id:2 c_id=1  3级 id:3 c_id=2  假如数据库中的关联形式是这样的,那么我只能根据3的id,加入4级,不能在2级下面加入同级的3级类,如id:4 c_id=2;这样的,我不能加入,控制台只有select操作,但是我可以加入id:4 c_id=3的。  最搞笑的是,当我把浏览器关了,重开进入页面,A功能正常了,加入同级id:4 c_id=2;也OK了,  接着我向下延伸分类,又出现了上述的问题,最让我不理解的是,这跟浏览器啥关系啊!(我的IE6,汗)  另外附上hbm.xml的关联关系   程序代码 <!-- self -->         <many-to-one name="parentCatalog"             class="com.blur.myHibernate.po.article.Catalog">             <column name="catalog_id"></column>         </many-to-one>         <set name="childCatalogs" cascade="save-update"             inverse="true" lazy="false">             <key>                 <column name="catalog_id"></column>             </key>             <one-to-many                 class="com.blur.myHibernate.po.article.Catalog" />         </set> 解决办法:formBean在提交表单的时候,域中数据库在下一次中仍然保留引起的,struts formBean 默认的scope为session,手动设置为request,就好了。。。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部