Lambda 表达式中的 @Transactional

san*_*jay 6 java spring java-8 spring-data spring-boot

我在普通函数中使用 @transactional 进行数据库更新操作。但是在 lambda 表达式中 @transactional 是不允许的。这要怎么处理呢?下面是我的代码。

//normal function
  @Transactional
   void saveTransaction(String uniqueId) {
       Transaction transaction = new Transaction();
       transaction.setUniqueId(uniqueId);
       transactionRepository.save(transaction);
   }

   **@Transactional**  //Error Message - @Transactional not applicable to this field
   Consumer<String> saveTransaction = (uniqueId) ->
   {
       Transaction transaction = new Transaction();
       transaction.setUniqueId(uniqueId);
       transactionRepository.save(transaction);
   };
Run Code Online (Sandbox Code Playgroud)

小智 1

@Transactional 只能与公共函数一起使用,不能与变量一起使用。Lambda 不是函数声明。这就像变量声明。