Spring @Transactional没有成功或挂起

时间:2017-12-08 07:26:42

标签: java spring

我需要项目帮助,因为我不熟悉spring @transactional注释。问题是为什么我的应用程序挂起使用@transactional方法,但没有它挂起。另外,我如何解决这个问题,以便交易成功。

场景是我的应用程序设置如下:

  1. 使用声明式交易管理
  2. 一个方法有@transactional(rollbackFor = Exception.class)注释,并多次访问数据库。
  3. 所述方法调用另一个返回String并多次访问数据库的方法。
  4. 交易没有超过完成导致我的申请陷入僵局。它不会返回任何异常。
  5. 以下代码是示例代码段

     @Autowired
     JdbcTemplate template;
    
     @Transactional(rollbackFor = Exception.class)
      public final void upsertData(){
      insertTable1(); // insert query to insert in table 1
      addReferencingData(); // was just called to update table but returns                something which is not used;
      //Hangs up before getting to next statement
      somePreparedStatmentSQLmergeTable1(mergesql,template); // query to merge in table 1
    }
    
    public final String addReferencingData(){
       updateTableA(); // update query to update values in table A
       updateTableB(); // update query to update values in table B
       mergeTable1(); // merge query to update or insert in table 1
    
      return someString;
    }
    
        public static void somePreparedStatmentSQLmergeTable1(sql,template){
          template.batchUpdate(sql, new BatchPreparedStatementSetter() {
    
            public void setValues(final PreparedStatement ps, final int i){
             // setting parameters to be used
             }
             public int getBatchSize(){
             // returns size of data's
             }
          }
        }
    

    还在我的application-context.xml文件中添加了默认的事务管理器.Transaction已基于日志工作。只有在这种特定方法中它才起作用。

    更新了一些信息以便更清楚。

0 个答案:

没有答案