Если вы используете репозиторий JPA, вы можете использовать следующий пример:
import com.example.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Lock;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import javax.persistence.LockModeType;
import java.util.List;
public interface StudentRepository extends JpaRepository<Student, Long> {
@Lock(value = LockModeType.PESSIMISTIC_WRITE)
@Query("select s from Student s where s.id IN (:ids)")
List<Student> findByIdsAndLockForWrite(@Param("ids") List<Long> ids);
}
Обратите внимание, что служба, которая вызывает этот репозиторий, должна использовать:
@Transactional(propagation = Propagation.REQUIRES_NEW)