#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())))
Но как я могу распаковать изображения?