当前位置: 代码迷 >> Eclipse >> spring+hibernate+struts主从表保存出错!怎么解决
  详细解决方案

spring+hibernate+struts主从表保存出错!怎么解决

热度:106   发布时间:2016-04-23 15:01:06.0
spring+hibernate+struts主从表保存出错!如何解决?
主表orders(
orderid   int  
)
从表orderitem(
orderitemid   int,
orderid   int
)
数据库是oracle,主从表的关键字是自动增长的,从表设定了外键for_orderid,并设定对数据完整性条件。

实际运行情况:
java.sql.BatchUpdateException:   ORA-02291:   integrity   constraint   (SHA.FOR_ORDER_ID)   violated   -   parent   key   not   found
估计是保存从表的时候,主表没有提交。

我保存数据的时候在OrdersDAO的save方法中:
        public   void   save(Orders   transientInstance)   {
                log.debug( "saving   Orders   instance ");
                try   {
                        getHibernateTemplate().save(transientInstance);
                        Iterator   iterator   =   transientInstance.getOrderitems().iterator();
                        while   (iterator.hasNext()){
                        log.debug( "saving   Orderitem   instance ");
                        getHibernateTemplate().save((Orderitem)iterator.next());
                        }                      
                }   catch   (RuntimeException   re)   {
                        log.error( "save   failed ",   re);
                        throw   re;
                }
        }
我查看debug的时候,从表的外键已经被赋值了,并且等于主表orderid值
...
DEBUG   [http-8080-1]   (AbstractBatcher.java:324)   -   insert   into   SHA.ORDERS   (CUST_ID,   TOTAL_PRICE,   CUSTOMERNAME,   TELEPHONE,   ADDRESS,   POST,   EMAIL,   ORDER_ID)   values   (?,   ?,   ?,   ?,   ?,   ?,   ?,   ?)
DEBUG   [http-8080-1]   (AbstractBatcher.java:378)   -   preparing   statement
DEBUG   [http-8080-1]   (BasicEntityPersister.java:1612)   -   Dehydrating   entity:   [com.ascent.bean.Orders#31]
DEBUG   [http-8080-1]   (NullableType.java:59)   -   binding   '1 '   to   parameter:   1
DEBUG   [http-8080-1]   (NullableType.java:59)   -   binding   '200.8 '   to   parameter:   2
DEBUG   [http-8080-1]   (NullableType.java:59)   -   binding   'shang '   to   parameter:   3
DEBUG   [http-8080-1]   (NullableType.java:59)   -   binding   '13523452345 '   to   parameter:   4
DEBUG   [http-8080-1]   (NullableType.java:59)   -   binding   'nanno '   to   parameter:   5
DEBUG   [http-8080-1]   (NullableType.java:59)   -   binding   '234543 '   to   parameter:   6
DEBUG   [http-8080-1]   (NullableType.java:59)   -   binding   'shang@sh.com '   to   parameter:   7
  相关解决方案