如何在单个事务中管理 2 个 DAO 方法?

How to manage 2 DAO methods in a single transaction?

我需要在单个事务中管理 2 个 Dao 方法,其中一个失败应该回滚另一个。调用方法在服务层。 Spring 和 Hibernate 本机 sql 查询中使用的技术。有办法实现吗?
调用方法:: @Transactional(propagation= Propagation.REQUIRED) public String save(AllowFileTypesForm formBeanObj,Hashtable global)

调用方法 1::

public  boolean deleteData( String strTableName,String strWhereClause)  {
      Session session = sessionFactory.getCurrentSession();                                  
      String strSqlQuery = null;
      boolean deleted=false;
      strSqlQuery = "DELETE FROM Persons where" + strWhereClause;
      try {
           Query query=session.createSQLQuery(strSqlQuery);  
            if (query.executeUpdate() <= 0) {
              throw new SQLException("No row deleted from table "      +strTableName);
        }
          else{
            deleted=true;
        }
    } 

          catch(Exception e){
          e.printStackTrace();
      }
      return deleted;
   }

与此方法类似,还有另一种方法可以从其他 table.

中删除数据

在调用这些 DAO 方法的服务方法上添加 @TransactionalThis 文章很好地总结了它的工作原理。

它不会回滚,因为你正在捕获异常。 Spring 的事务管理通过@Transactional AOP 检测到的退出事务边界的异常来工作。

如果您捕获到 sql 日志记录异常或其他异常,您必须重新抛出或抛出新异常才能开始回滚。