hibernate不执行update,不抛错?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

hibernate不执行update,不抛错?报错

2020-06-20 17:20:07 224 1

Shipment shipment = shipmentDao.getByDate(id, shipmentDate);
            OrderDetail od = baseDao.getById(OrderDetail.class, id);
            if (order == null) {
                order = od.getOrder();
            }
            if (shipment == null) {
                shipment = new Shipment();
                shipment.setOrderDetail(od);
                shipment.setTotal(total);
                shipment.setQuantity(quantity);
                shipment.setShipmentDate(shipmentDate);
                shipment.setType(type);
                baseDao.saveByObject(shipment);//这里执行保存成功
            } else {
                //因为Shipment是ManytoOne OrderDetail 并且是OrderDetail,这里获得的OrderDetail是lazy的od,这会造成下面的baseDao.updateByObject(od);不执行
                //如何解决
                shipment.setTotal(total);
                shipment.setQuantity(quantity);
                shipment.setType(type);
                baseDao.updateByObject(shipment);//这里不执行更新,也不打印update sql
            }
            od.setShipment(total);

            baseDao.updateByObject(od);

求大神帮忙

1.为何能保存到shipment,却不能update shipment,也不报错

2.如何解决获取的OrderDetail是lazy,我想从DB里获取,不是从缓存

另外一个方法

Shipment shipment = baseDao.getById(Shipment.class, id);
        baseDao.deleteByObject(shipment);
        OrderDetail od = shipment.getOrderDetail();
        od.setShipment(od.getShipment() - shipment.getTotal());
        baseDao.updateByObject(od);
        Order order = od.getOrder();
        order.setShipment(order.getShipment() - shipment.getTotal());
        baseDao.updateByObject(order);
        ProductionProcess process = productionProcessDao.getByOrderDetailAndDate(od.getId(), shipment.getShipmentDate());
        process.setShipment(0);
这里第2行也出现不能删除shipment

取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-20 17:20:26
     baseDao.getById 应该是没和spring事务aop挂钩。可能要修改为  baseDao.updateXXX八成是事务的问题事务没有提交,

    Hibernate会优化执行的SQL,执行的SQL顺序Hibernate优化过后并不能保证一致。

    baseDao.update之前先执行baseDao.get(); 会触发update事件

    0 0
相关问答

1

回答

Hibernate如何使数据update呀?

2022-08-16 21:06:55 216浏览量 回答数 1

1

回答

hibernate class标签报错 ?报错

2020-06-23 21:18:37 248浏览量 回答数 1

2

回答

hibernate注解问题?报错

2020-06-15 19:54:10 1422浏览量 回答数 2

1

回答

Hibernate的一对多自关联?报错

2020-06-14 16:00:10 280浏览量 回答数 1

1

回答

j2cache hibernate3代码报错?报错

2020-06-09 13:24:51 420浏览量 回答数 1

1

回答

hibernate 左联接 order by 无效:报错

2020-06-07 10:33:20 273浏览量 回答数 1

1

回答

hibernate注入?报错

2020-06-07 16:52:49 465浏览量 回答数 1

1

回答

hibernate jpa 拦截器使用:报错 

2020-06-08 16:32:55 223浏览量 回答数 1

1

回答

hibernate 左联接 order by 无效 - hibernate报错

2020-05-31 19:23:25 234浏览量 回答数 1

1

回答

hibernate 左联接 order by 无效-hibernate报错

2020-05-31 10:36:41 267浏览量 回答数 1
+关注
爱吃鱼的程序员
https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
2
文章
21564
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载