Запросы, отправленные почтальоном, работают только два раза в приложении Spring Boot (Hibernate JPA)

#java #spring-boot #hibernate #jpa

Вопрос:

У меня есть приложение для загрузки Spring и конечная точка, которая извлекает все курсы из базы данных PostgreSQL. Объект курса содержит текст и изображение.

Обслуживание:

 @Transactional
public List<CourseDto> getCourses() {

    List<Courses> courses = courseRepositoryDao.findAllByIsCourseFreeAndIsCourseActive(true, true);
    List<CourseDto> coursesNameDto = courses
        .stream()
        .peek(i -> i.setLogo(decompressZLib(i.getLogo())))
        .map(course -> modelMapper.map(CourseMapper.toUserDtoFreeCourses(course), CourseDto.class))
        .collect(Collectors.toList());
    System.out.println("**************************"   coursesNameDto   "**********************");
    
    return coursesNameDto;
}

//uncompress the image bytes before returning it to the angular application

public static byte[] decompressZLib(byte[] data) {

    Inflater inflater = new Inflater();
    inflater.setInput(data);
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
    byte[] buffer = new byte[1024];
    try {
        while (!inflater.finished()) {
            int count = inflater.inflate(buffer);
            outputStream.write(buffer, 0, count);
        }
        outputStream.close();
    } catch (IOException | DataFormatException ioe) {
    }
    return outputStream.toByteArray();
}
 

После двух успешных попыток Почтальон остается в ожидании, как показано ниже:

введите описание изображения здесь

Может быть, это от @Transactional? Мой логотип сохраняется как byte [], а в PostgreSQL — как «lob». Когда БД пуста, работает столько, сколько нужно.

Обновить:

Проблема в том, что :.peek(i -> i.setLogo(распаковка(i.getLogo())))

Но как я могу распаковать изображения?