• 错误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.     } 
  • 相关阅读:
    eclipse code templates 设置(eclipse注释模版配置)
    kettle 程序调用执行ktr转换示例代码
    JQuery学习笔记
    获取工程路径(jar和普通文件结构通用) java
    java 获取jar包路径,遍历jar包
    百度跨域ajax
    eclipse Wtp在线安装
    PropertiesHelper
    java base64/jQuery Base64
    Eclipse中,打开文件所在文件夹的插件,及设置
  • 原文地址:https://www.cnblogs.com/keyi/p/6419976.html
Copyright © 2020-2023  润新知