2015-06-23 73 views
6

是否有可能在彈簧數據存儲庫中有兩種方法 - 一種不鎖定T findOne(Predicate p);以及相同的鎖定@Lock(LockModeType.PESSIMISTIC_WRITE) T findOne(Predicate p);彈簧數據和鎖定

我希望有類似

public interface TransactionRepository extends JpaRepository<Transaction, String>, 
    QueryDslPredicateExecutor<Transaction> { 

    @Lock(LockModeType.PESSIMISTIC_WRITE) 
    @AliasFor("findOne") 
    Transaction findOne_withLock(Predicate p); 
} 

回答

0

不,它不可能

Java不允許你定義具有相同的原型兩種功能。 U可以改爲具有基於某些環境變量調用功能的選擇器

public interface TransactionRepository extends JpaRepository<Transaction, String>, 
      QueryDslPredicateExecutor<Transaction> { 

     @Lock(LockModeType.PESSIMISTIC_WRITE) 
     Transaction findOne_withLock(Predicate p); 

     default Transaction findOne(Predicate p) { 
      if (EvironmentCheck) { 
       return findOne_withLock(p); 
      } 
      return findOne(p); 
     } 
    }