Spring 数据与锁定

6

在Spring Data存储库中,是否可以有两种方法 - 一种不带锁定的 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);
}
1个回答

0

不,这是不可能的。

Java不允许您定义具有相同原型的两个函数。您可以使用选择器根据某些环境变量调用函数。

    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);
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接