我在JpaRepository
中有自定义方法,它们是递归调用的。firstMethod
实际上是从DB调用数据。secondMethod
和thirdMethod
分别调用firstMethod
和secondMethod
。
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
}
}
1条答案
按热度按时间vjrehmav1#
您似乎混淆了事务和查询执行。
如果所有东西都在单个事务中运行,这取决于您在repository方法上放置或不放置的
@Transactional
注解。执行什么查询完全取决于
firstMethod
和它的查询注解,它将在每次调用该方法时执行。