spring +ibatis ,事务不回滚
我想再问下 ,再service层下调用 两个dao层的数据插入的方法 ,现在我测试事务回滚 ,第一个dao 层插入数据库成功的 ,第二个插入数据库是不成功的 ,为什么事务没有回滚?
这个业务逻辑层的代码
Java code
public String saveParam(EuserComm euserComm, Bp[] bp, Temp[] temps, Bo[] bo) {
if(bp==null||bp.length==0){
throw new
RuntimeException("RC002");
}
BpPojo[] bpList=new BpPojo[bp.length];
for(int i=0;i<bp.length;i++){
BpPojo bpPojo=new BpPojo();
Bp bpObj=bp[i];
bpPojo.setBpId(UUIDGenerator.getUUID());
bpPojo.setRegisterId(bpObj.getRegisterId());
bpPojo.setUserName(userDao.getUserNameByRegId(bpObj.getRegisterId()));
bpPojo.setMeasureTime(StringUtil.dateFormat("yyyyMMddHHmm", bpObj.getMeasureTime()));
bpPojo.setProductNo(euserComm.getProductNo());
bpPojo.setSendTime(StringUtil.dateFormat("yyyyMMddHHmm", euserComm.getSendTime()));
bpPojo.setSp(bpObj.getSp());
bpPojo.setDp(bpObj.getDp());
int pp=bp[i].getSp()-bp[i].getDp();
bpPojo.setPp(pp);
bpList[i]=bpPojo;
}
bpDao.saveBp(bpList);
if(temps==null||temps.length==0){
throw new RuntimeException("RC002");
}
TempPojo[] tempList=new TempPojo[temps.length];
String userName=userDao.getUserNameByRegId(temps[0].getRegisterId());
for(int i=0;i<temps.length;i++){
TempPojo tempPojo=new TempPojo();
Temp temp=temps[i];
tempPojo.setTempId(UUIDGenerator.getUUID());
tempPojo.setRegisterId(temp.getRegisterId());
tempPojo.setProductNo(euserComm.getProductNo());
tempPojo.setSendTime(StringUtil.dateFormat("yyyyMMddHHmm",euserComm.getSendTime()));
tempPojo.setUserName(userName);
tempPojo.setMeasureTime(StringUtil.dateFormat("yyyyMMddHHmm",temp.getMeasureTime()));
tempPojo.setTempValue(Float.parseFloat(temp.getTempValue()));
tempList[i]=tempPojo;
}
tempDao.saveTemp(tempList);
return "RC001";
}
[/code]
------解决方案--------------------
我觉得是ibatis的bug
后来通过Spring的AOP切入解决