spring-data-jpa JpaRepository中用户指定的方法是否在单个事务中执行?

guykilcj  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(130)

我在JpaRepository中有自定义方法,它们是递归调用的。firstMethod实际上是从DB调用数据。secondMethodthirdMethod分别调用firstMethodsecondMethod
thirdMethod是否在单个事务中执行?即,我希望整个查询列表在一次执行中被触发,从数据库中获取整个列表并在一次执行中返回,而不是在列表中的每个对象上触发多个查询。

public interface SomeDao extends JpaRepository<SomeObject, SomeObjectId> {

    @Deprecated
    @Query("custom query")
    Slice<SomeObject> firstMethod(BigInteger a, Timestamp b, Pageable c);

    default Optional<SomeOtherObject> secondMethod(SomeObject someObject) {
        // calls first method
        // object has separate fields that apply in first method -> someObject.a, someObject.b etc
    }

    // I want to know whether third method gets executed in single transaction???
    default List<Optional<SomeOtherObject>> thirdMethod(List<SomeObject> listOfObjects) {
        // calls second method for a list of objects
    }
}
vjrehmav

vjrehmav1#

您似乎混淆了事务和查询执行。
如果所有东西都在单个事务中运行,这取决于您在repository方法上放置或不放置的@Transactional注解。
执行什么查询完全取决于firstMethod和它的查询注解,它将在每次调用该方法时执行。

相关问题