日期:2014-05-16  浏览次数:20427 次

方法中既有hibernate又有jdbc,加了@Transactional但事物回滚异常

写接口的时候,如果是数据库模式,经常会需要从对方数据库中直接提取数据,然后稍做处理,插入wms数据库,此时,一般就会在manager中既用到hibernate又用到jdbc,伪代码如下:其中接口getErpCompanyRowData方法是加了@Transactional的。

?

/**处理单条客户信息*/

1?public?void?getErpCompanyRowData(ResultSet?rs,?PreparedStatement?ps,?Connection?erp_con)?throws?SQLException?{

2????????ErpCompany?ec?=?EntityFactory.getEntity(ErpCompany.class);

3????????ec.setDownId(rs.getLong("downid"));

4????????ec.setType(rs.getString("type"));

5????????ec.setCompanyId(rs.getLong("companyid"));

6????????………可能很多set

7????????commonDao.store(ec);

8

9???????String?sql?=?"update?WMS_TRANSFERS_D_COMPANY?set?tranflag=1,?downtime=??where?downid=?";

10????????ps?=?erp_con.prepareStatement(sql);

11????????ps.setTimestamp(1,?Timestamp.valueOf(DateUtil.getDateTime()));