大牛,求教: collection was not processed by

大明哥_
Java领域优质创作者
博客专家认证
2013-05-11 07:59:30
这是在做毕业设计的过程中遇到的问题。其实刚刚开始的时候没有问题,等过了两天再来测试的时候就出现了这个问题。在网上查了,说要升级hibernate,但是我的hibernate已经是3.6版本的了,还需要升级么?
我的代码如下:
/**
* 根据订单修改商品数量信息:即发货
* @param orderDetails 订单详情
*/
public void updateGoodsByOrder(List<OrderDetail> orderDetails) {
if(orderDetails.size()>0&&orderDetails!=null){
for(int i = 0;i < orderDetails.size();i++){
OrderDetail orderDetail = orderDetails.get(i);
//商品现存量--,销售量+
GoodsListing goods = goodsListingDao.get(orderDetail.getGoodsListing().getGoodsId());
int exitNumber = goods.getGoodsExitNumber()-orderDetail.getGoodsNumber();
int marketNumber = goods.getGoodsMarketNumber()+orderDetail.getGoodsNumber();
goods.setGoodsExitNumber(exitNumber);
goods.setGoodsMarketNumber(marketNumber);
//保存商品实例
goodsListingDao.update(goods);

//修改商品指定尺码、颜色的数量
//获取该商品的指定颜色
GoodsColor goodsColor = goodsColorDao.getGoodsColorByIdAndColor(goods.getGoodsId(),orderDetail.getGoodsColor());
//获取指定颜色、指定尺码
//GoodsSize goodsSize = goodsSizeDao.getGoodsSizeByColorAndSize(goodsColor.getGoodsColorId(), orderDetail.getGoodsSize());
//获取所有该颜色的所有尺码
List<GoodsSize> goodsSizes = goodsSizeDao.getGoodsSizeByColor(goodsColor.getGoodsColorId());
for(int j = 0;j < goodsSizes.size();j++){
GoodsSize goodsSize = goodsSizes.get(i);
if(goodsSize.getGoodsSize()==orderDetail.getGoodsSize()){
int sizeNumber = goodsSize.getGoodsNumber()-orderDetail.getGoodsNumber();
goodsSize.setGoodsNumber(sizeNumber);
goodsSizeDao.update(goodsSize);
break;
}
}
}
}
}

在这个代码中我是两次update,我想应该是这两次update,引起的。通过debug,我发现第二次到了第二次update,控制台并没有说出update的语句,而是通过循环到获取指定颜色,尺码那里才update。我想是不是这里出了问题。如果是这里出了问题,如何来提交事物?我是通过Spring来控制事务的。
希望大牛能够帮组解决这个问题,不胜感谢!!!
...全文
114 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧