Spring JPA Lock Table и распространять транзакцию - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть метод класса, который извлекает некоторую строку из базы данных и устанавливает блокировку.

public interface PersonRep extends JpaRepository<Person, String> {

    @Lock(LockModeType.PESSIMISTIC_WRITE)
    @Query(value = "SELECT p FROM Person as p WHERE p.fProcessed = false")
    List<Person>  fetchPersonToProccess(@Param("name") String name,Pageable pageable);
}

У меня есть сервисный уровень, который вызывает вышеуказанный метод как

@Service
public class PersonService{

    @Override
    @Transactional
    public List<Person> fetchPersonToProccess(String name, Pageable pageable) {
        return personRep.fetchPersonToProccess(name, pageable);      
    }
}

I нужно обработать эти строки результата в другой метод класса, не выходя из блокировки.

@Service
public class PersonProcess{
    @Transactional
    public List<Person> fetchPersonToProccess(UpdateRequest updateRequest, int numPage){
        //Process Row
        personService.fetchPersonToProccess(..);
    }
}

Я хотел бы, чтобы блокировка была снята в конце второго метода в классе PersonProcess. Как я могу это сделать?

...