请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在同一个事务下,插入店铺之后,再进行更新操作找不到这个数据。

老师你好,在同一个事务下,我插入店铺之后,再进行更新店铺,插入成功然后更新失败,最后定位问题到在这个事务下查询不到之前插入的店铺,我用的数据库是Oracle,查询和更新方法都测过没问题,老师帮忙看看。
`@Override
@Transactional(propagation=Propagation.REQUIRED)
public ShopExcution addShop(Shop shop, File shopImg) {
//判断传入的店铺信息是否为空
if (shop == null) {
return new ShopExcution(ShopStateEnum.NULL_SHOP);
}

	try {
		//给shop赋值
		shop.setEnableStatus(0);  //审核中
		shop.setCreateTime(new Date());
		shop.setLastEditTime(new Date());
		int effectedNum = shopDao.insertShop(shop);
		if (effectedNum <= 0) {
			throw new ShopOperationException("店铺创建失败");
		}else {
			//店铺创建成功且当有图片传入时
			if (shopImg != null) {
				//存储图片
				try {
					addShopImg(shop,shopImg);
				} catch (Exception e) {
					throw new ShopOperationException("addShopImg error:" + e.getMessage());
				}
				Long aString = shopDao.selectShopById(shop.getShopId());
				//更新店铺的图片的地址
				effectedNum = shopDao.updateShop(shop);
				if (effectedNum <= 0) {
					throw new ShopOperationException("更新图片地址失败");
				}

			}
		}
		
	} catch (Exception e) {
		throw new ShopOperationException("add shop error" + e.getMessage());
	}
	
	return new ShopExcution(ShopStateEnum.CHECK, shop);
}

`
图片描述

正在回答 回答被采纳积分+3

1回答

翔仔 2019-06-27 08:07:32

同学好,可以设置断点看看插入成功后,有没有返回shopid?

0 回复 有任何疑惑可以回复我~
  • 老师您好,我debug调试过,有shopId,我在其中加了一个查询,参数是shopId是有值的,就是查不到之前插入的数据,按理来说在同一个事务中,之前插入的数据应该是可以看到的。求解?
    回复 有任何疑惑可以回复我~ 2019-06-27 18:18:36
  • 翔仔 回复 提问者 weixin_慕移动3067831 #2
    同学好,是说插入了返回shopId了,但是同一个事务再次查询没有查到吗,如果是的话,应该跟事务隔离级别相关以及scope相关,具体可以看看这个
    https://blog.csdn.net/lnkToKing/article/details/80936188
    回复 有任何疑惑可以回复我~ 2019-06-28 11:48:18
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信