请看: 
@Transactional 
public void method() { 
   writeToDb(); 
   writeToFile(); 
} 我的需求是写入数据库失败,则操作失败,回滚,写入文件失败,同样操作失败,回滚数据库的操作。 表面上看这个没有什么问题,但是在遇到数据库中有约束时就会有问题了,比如数据库中某个字段长度为16,但是我们在写入数据库的时候写入了长为18的字段值,此时就会出现在writeToDb()方法处并没有抛出异常,实际上是在整个事务结束时commit的时候才抛出的异常,这样子就会有个问题,writeToFile()方法也正常执行了,很显然这样不对,如果将writeToFile移出事务,则无法对写文件失败的时候回滚数据库,请问,各位高手有什么高见,最好是能在writeToDb检查数据库的约束或者抛出异常。