关于java事务的问题!

野草这么南七 2012-02-08 10:27:38
try {
//得到结账流水号
String accountBalanceID = SequenceService.getNewSequenceID("account_charge_no", dataSource); //TODO:改为业务主键生成方式
ChargeBalance charge = new ChargeBalance();
charge.setAccountDate(acctDate);
charge.setAccountNo(accountBalanceID);
charge.setOperator(operatorName);
charge.setMaxRcptNo(maxRcptNo);
charge.setMinRcptNo(minRcptNo);
charge.setFreeNum(0);
charge.setChargeNum(Integer.parseInt(chargeNum));
charge.setReturnNum(Integer.parseInt(returnNum));
charge.setChargeFee(Double.parseDouble(chargeFee));
charge.setChargeCost(Double.parseDouble(chargeCost));
charge.setReturnFee(Double.parseDouble(returnFee));
charge.setXNHCharge(Double.parseDouble(XNHCharge));
//收费结账结算
AccountBalanceOfChargeService service = new AccountBalanceOfChargeService(dataSource);
service.doChargeOfBalanceByTime(hospitalID, charge, startTime, endTime);
context.addDataField(Constants.JSON_RESULT_NAME, accountBalanceID);
} catch (Exception e) {
//设置为回滚状态
this.getTransaction().setRollbackOnly(true); log.error("DoAccountOfChargeAction is Error!",e);
}


请问如果 service里面的sql没有插入成功这种事务处理可以吗?
...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
野草这么南七 2012-02-08
  • 打赏
  • 举报
回复
谢谢各位的回答!
stevenzxl 2012-02-08
  • 打赏
  • 举报
回复
这种写法太陌生了,好久没用过了,所以不敢说对错。现在我都用spring框架里面的事务处理事务

TransactionManager trans = new TransactionManager();// 框架自动回滚
try {
trans.start();
AccountBalanceOfChargeService service = new AccountBalanceOfChargeService(dataSource);
service.doChargeOfBalanceByTime(hospitalID, charge, startTime, endTime);
context.addDataField(Constants.JSON_RESULT_NAME, accountBalanceID);
trans.commit();

} finally {
trans.end();
}
pm90125 2012-02-08
  • 打赏
  • 举报
回复
我觉得你这个只是一个异常捕捉..如果插入不成功而没有抛异常的话..肯定不能回滚.
野草这么南七 2012-02-08
  • 打赏
  • 举报
回复
没人帮我确认下吗?
野草这么南七 2012-02-08
  • 打赏
  • 举报
回复
2楼谢谢你,但是我只想知道我上面那种写法可行?只是感觉那个混滚没什么作用。
xiaoqinD 2012-02-08
  • 打赏
  • 举报
回复
要不你做添加的时候做下判断,添加成功TRUE,否则FALSE
然后通过这个值来做事务的回滚操作
野草这么南七 2012-02-08
  • 打赏
  • 举报
回复
请说出原因,谢谢各位了。

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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