zoukankan      html  css  js  c++  java
  • 错误Batch update returned unexpected row count from update [0]; actual row count: 0;

    错误Batch update returned unexpected row count from update [0]; actual row count: 0;

    把开发过程中碰到的BUG累积下来也是一笔财富。
    网络收集:
    Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
    不注意的话,还真的有点无所适从,Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1这个异常是由于主键设置为自增长,而在我们插入记录的时候设置了ID的值导致的。
    Hibernate 注释@OneToOne 建立表关联实例

    我的解决方案:
    我是在做One-To-One级联 添加/更新 碰到的,开始还以为是我配置错误,后面经过仔细排查,发现是我在页面上写了子表ID的隐藏表单域,传到后面的时候value="" ,不是value=null,所以执行的时候hibernate判断为更新,所以报错了。我的解决方案是把ID单独传到后台,然后用代码判断是否为空,然后进行更新或者增加。


    下面是我的代码:
    TranOrders.java(父类):

    Java代码  收藏代码
    1. @Entity  
    2. @Table(name = "TSPRO_TRAN_ORDERS")  
    3. public class TranOrders implements java.io.Serializable {  
    4.   
    5.     // Fields      
    6.     private TranItem tranItem;  
    7.     private TranCar tranCar;  
    8.   
    9.     /** default constructor */  
    10.     public TranOrders() {  
    11.     }  
    12.   
    13.   
    14.     @OneToOne(cascade=CascadeType.ALL,mappedBy="tranOrders",fetch=FetchType.LAZY,optional = true)   
    15.     @JoinColumn(name="id",unique=true)   
    16.     public TranItem getTranItem() {  
    17.         return tranItem;  
    18.     }  
    19.   
    20.     public void setTranItem(TranItem tranItem) {  
    21.         this.tranItem = tranItem;  
    22.     }  
    23.   
    24.     @OneToOne(cascade=CascadeType.ALL,mappedBy="tranOrders",fetch=FetchType.LAZY,optional = true)   
    25.     @JoinColumn(name="id",unique=true)   
    26.     public TranCar getTranCar() {  
    27.         return tranCar;  
    28.     }  
    29.   
    30.     public void setTranCar(TranCar tranCar) {  
    31.         this.tranCar = tranCar;  
    32.     }  
    33.   
    34.    
    35. }  


    TranItem.java(子类)

    Java代码  收藏代码
    1. @Entity  
    2. @Table(name = "TSPRO_TRAN_ITEM")  
    3. public class TranItem implements java.io.Serializable {  
    4.   
    5.     // Fields      
    6.     private TranOrders tranOrders;  
    7.   
    8.     @OneToOne(fetch = FetchType.LAZY,optional=false)  
    9.     @JoinColumn(name = "TSP_ID",unique=true)  
    10.     public TranOrders getTranOrders() {  
    11.         return this.tranOrders;  
    12.     }  
    13.   
    14.     public void setTranOrders(TranOrders tranOrders) {  
    15.         this.tranOrders = tranOrders;  
    16.     }  
    17. }  


    TranCar.java(子类)

    Java代码  收藏代码
    1. @Entity  
    2. @Table(name = "TSPRO_TRAN_CAR")  
    3. public class TranCar implements java.io.Serializable {  
    4.   
    5.     // Fields      
    6.     private TranOrders tranOrders;  
    7.    
    8.     @OneToOne(fetch = FetchType.LAZY,optional=false)  
    9.     @JoinColumn(name = "TSP_ID",unique=true)  
    10.     public TranOrders getTranOrders() {  
    11.         return this.tranOrders;  
    12.     }  
    13.   
    14.     public void setTranOrders(TranOrders tranOrders) {  
    15.         this.tranOrders = tranOrders;  
    16.     }  
    17. }  


    Action(调用):

    Java代码  收藏代码
      1. public String saveTranOrders() {  
      2.         String tranItemId=super.getRequest().getParameter("tranItemId");  
      3.         String tranCarId=super.getRequest().getParameter("tranCarId");  
      4.         String loginUserId = (String) getSession().getAttribute(Constant.LOGIN_USER_ID);  
      5.           
      6.         //时间转换  
      7.         String loadSort=super.getRequest().getParameter("loadSort");  
      8.         String reachTime=super.getRequest().getParameter("reachTime");  
      9.         String wzdTime=super.getRequest().getParameter("wzdTime");  
      10.           
      11.         SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH时");  
      12.           
      13.           
      14.         try {  
      15.             if(tranOrders!=null){  
      16.                 tranOrders.setLoadSort(new Timestamp(sdf.parse(loadSort).getTime()));  
      17.                 tranOrders.setReachTime(new Timestamp(sdf.parse(reachTime).getTime()));  
      18.                 tranOrders.setWzdTime(new Timestamp(sdf.parse(wzdTime).getTime()));  
      19.                 if(BeanUtils.isNotEmpty(tranItemId)){  
      20.                     tranItem.setId(tranItemId);  
      21.                 }  
      22.                 if(BeanUtils.isNotEmpty(tranCarId)){  
      23.                     tranCar.setId(tranCarId);  
      24.                 }  
      25.                   
      26.                 tranCar.setTranOrders(tranOrders);  
      27.                 tranOrders.setTranCar(tranCar);  
      28.                   
      29.                 tranItem.setTranOrders(tranOrders);  
      30.                 tranOrders.setTranItem(tranItem);  
      31.                   
      32.                 if(BeanUtils.isNotEmpty(tranOrders.getId())){  
      33.                     tranOrders.setUpdateBy(loginUserId);  
      34.                     tranOrders.setUpdateDate(new Timestamp(System.currentTimeMillis()));  
      35.                     tranOrdersManager.update4ClearCurrSession(tranOrders);  
      36.                 }  
      37.                   
      38.                 tranOrders.setCreateBy(loginUserId);  
      39.                 tranOrders.setCreateDate(new Timestamp(System.currentTimeMillis()));  
      40.                 tranOrdersManager.save(tranOrders);  
      41.                 writerPrint("1");  
      42.             }else  
      43.             writerPrint("0");  
      44.         } catch (Exception e) {  
      45.             e.printStackTrace();  
      46.             writerPrint("2");  
      47.         }  
      48.         return NONE;  
      49.   
      50.     } 
  • 相关阅读:
    BZOJ 3531[Sdoi2014]旅行
    BZOJ4998 星球联盟
    BZOJ2959 长跑
    【北京集训D2T3】tvt
    [Bzoj]5343: [Ctsc2018]混合果汁
    HGOI20190810 省常中互测3
    HGOI20190809 省常中互测2
    HGOI20190808 省常中互测1
    组合排列和组合数 学习笔记
    2-SAT (two-statisfiability) 算法 学习笔记
  • 原文地址:https://www.cnblogs.com/keyi/p/6419976.html
Copyright © 2011-2022 走看看