В своем приложении я создал класс планировщика. Из этого класса я вызываю сервисный метод, который не является отдельной транзакцией. Транзакция управляется на уровне хранилища.
Код будет выглядеть так:
public void doAction(int id){
User user = repository.getUser(id);//transaction 1
repository.updateStatus(user);// transaction 2
repository.refresh():// call entityManager.refresh() internally
}
После получения объекта User из репозитория я обновляю статус. Затем сущность пользователя будет обновлена путем вызова entityManager.refresh ().
Но при вызове refresh () выдается исключение: InvalidArgumentException: объект не управляется.
Три звонка - это три разные транзакции.
Но я пытаюсь вызвать этот метод (doAction) из Spring Controller, он работает нормально. Но вызов из класса планировщика не удался.