Hibernate 多对多关联出现报错情况---Batch update returned unexpected row count from update
来源:互联网 发布:盐城大数据产业园简介 编辑:程序博客网 时间:2024/05/17 22:00
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单独传到后台,然后用代码判断是否为空,然后进行更新或者增加。
不注意的话,还真的有点无所适从,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(父类):
- @Entity
- @Table(name = "TSPRO_TRAN_ORDERS")
- public class TranOrders implements java.io.Serializable {
- // Fields
- private TranItem tranItem;
- private TranCar tranCar;
- /** default constructor */
- public TranOrders() {
- }
- @OneToOne(cascade=CascadeType.ALL,mappedBy="tranOrders",fetch=FetchType.LAZY,optional = true)
- @JoinColumn(name="id",unique=true)
- public TranItem getTranItem() {
- return tranItem;
- }
- public void setTranItem(TranItem tranItem) {
- this.tranItem = tranItem;
- }
- @OneToOne(cascade=CascadeType.ALL,mappedBy="tranOrders",fetch=FetchType.LAZY,optional = true)
- @JoinColumn(name="id",unique=true)
- public TranCar getTranCar() {
- return tranCar;
- }
- public void setTranCar(TranCar tranCar) {
- this.tranCar = tranCar;
- }
- }
TranItem.java(子类)
- @Entity
- @Table(name = "TSPRO_TRAN_ITEM")
- public class TranItem implements java.io.Serializable {
- // Fields
- private TranOrders tranOrders;
- @OneToOne(fetch = FetchType.LAZY,optional=false)
- @JoinColumn(name = "TSP_ID",unique=true)
- public TranOrders getTranOrders() {
- return this.tranOrders;
- }
- public void setTranOrders(TranOrders tranOrders) {
- this.tranOrders = tranOrders;
- }
- }
TranCar.java(子类)
- @Entity
- @Table(name = "TSPRO_TRAN_CAR")
- public class TranCar implements java.io.Serializable {
- // Fields
- private TranOrders tranOrders;
- @OneToOne(fetch = FetchType.LAZY,optional=false)
- @JoinColumn(name = "TSP_ID",unique=true)
- public TranOrders getTranOrders() {
- return this.tranOrders;
- }
- public void setTranOrders(TranOrders tranOrders) {
- this.tranOrders = tranOrders;
- }
- }
Action(调用):
- public String saveTranOrders() {
- String tranItemId=super.getRequest().getParameter("tranItemId");
- String tranCarId=super.getRequest().getParameter("tranCarId");
- String loginUserId = (String) getSession().getAttribute(Constant.LOGIN_USER_ID);
- //时间转换
- String loadSort=super.getRequest().getParameter("loadSort");
- String reachTime=super.getRequest().getParameter("reachTime");
- String wzdTime=super.getRequest().getParameter("wzdTime");
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH时");
- try {
- if(tranOrders!=null){
- tranOrders.setLoadSort(new Timestamp(sdf.parse(loadSort).getTime()));
- tranOrders.setReachTime(new Timestamp(sdf.parse(reachTime).getTime()));
- tranOrders.setWzdTime(new Timestamp(sdf.parse(wzdTime).getTime()));
- if(BeanUtils.isNotEmpty(tranItemId)){
- tranItem.setId(tranItemId);
- }
- if(BeanUtils.isNotEmpty(tranCarId)){
- tranCar.setId(tranCarId);
- }
- tranCar.setTranOrders(tranOrders);
- tranOrders.setTranCar(tranCar);
- tranItem.setTranOrders(tranOrders);
- tranOrders.setTranItem(tranItem);
- if(BeanUtils.isNotEmpty(tranOrders.getId())){
- tranOrders.setUpdateBy(loginUserId);
- tranOrders.setUpdateDate(new Timestamp(System.currentTimeMillis()));
- tranOrdersManager.update4ClearCurrSession(tranOrders);
- }
- tranOrders.setCreateBy(loginUserId);
- tranOrders.setCreateDate(new Timestamp(System.currentTimeMillis()));
- tranOrdersManager.save(tranOrders);
- writerPrint("1");
- }else
- writerPrint("0");
- } catch (Exception e) {
- e.printStackTrace();
- writerPrint("2");
- }
- return NONE;
- }
0 0
- Hibernate 多对多关联出现报错情况---Batch update returned unexpected row count from update
- Hibernate 报错:Batch update returned unexpected row count from update [0]; actual row count
- hibernate 报错: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 解决方法
- SSH出现:org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0];
- mysql 报错 Batch update returned unexpected row count from update [0]
- {"Batch update returned unexpected row count from update; actual row ?
- hibernate 错误 Batch update returned unexpected row count from update [0]; actual row count: 0;
- Hibernate - Batch update returned unexpected row count from update: 0 actual row count: 0 expected:
- Hibernate:Batch update returned unexpected row count from update [0]; actual row count: 0; expected:
- Batch update returned unexpected row count from update [0]
- Batch update returned unexpected row count from update [0]
- Batch update returned unexpected row count from update [0]
- Hibernate——org.hibernate.StaleStateException: Batch update returned unexpected row count from update
- 关于Hibernate的 Batch update returned unexpected row count from update异常
- Hibernate的Batch update returned unexpected row count from update错误
- 关于Hibernate的 Batch update returned unexpected row count from update异常
- 关于Hibernate的 Batch update returned unexpected row count from update异常
- hibernate中主键与unsaved-value关系(Batch update returned unexpected row count from update)
- 【JVM】 JVM的server模式和client模式
- 嵌入式调试器-GDB
- springmvc学习笔记--json--返回json的日期格式问题
- android developer tiny share-201704019
- C++异常处理
- Hibernate 多对多关联出现报错情况---Batch update returned unexpected row count from update
- Python基础入门(一)- Python 的特点
- 程序员面试金典——检查是否为BST
- 第八周作业1(LeetCode3)
- ui5日常错误一
- 编程时需注意全局变量与局部变量
- 谈谈RecyclerView的LayoutManager-LinearLayoutManager源码分析
- 线段树
- iOS内购步骤详情,从申请税收协议开始