#java #spring #amazon-web-services #spring-boot #amazon-dynamodb
#java #весна #amazon-web-services #весенняя загрузка #amazon-dynamodb
Вопрос:
У меня есть приложение spring boot, в котором у меня есть BlogsService, вызывающий репозиторий Blogs, и он должен возвращать список блогов, соответствующих переданному поисковому запросу. Я получаю следующее, что вызвано строкой 76. Есть идеи? Спасибо
Строка 76:
return objectMapper.convertValue(searchEntity, BlogDetailsResponse.class);
IllegalArgumentException: не удается десериализовать экземпляр package.dto.BlogDetailsResponse
из токена
START_ARRAY в [Источник: НЕИЗВЕСТЕН; строка: -1, столбец: -1]
в com.cor.devsquareawsservice.services.impl.BlogServiceImpl.searchBlogs(BlogServiceImpl.java:76) ~[classes/:na]
BlogServiceImpl.java
@Override
public BlogDetailsResponse searchBlogs(SearchBlogsRequest searchBlogsRequest) {
try {
final List<BlogEntity> searchEntity = blogsRepository.searchBlogs(searchBlogsRequest.getSearchBlogsQuery());
return objectMapper.convertValue(searchEntity, BlogDetailsResponse.class);
} catch (final Exception exception) {
log.error(exception);
throw new DevSquareDynamoDBException(ExceptionConstants.SERVICE_CREATE_BLOG_EXCEPTION_MESSAGE, exception);
}
}
BlogsRepository.java
public List<BlogEntity> searchBlogs(String query) {
try {
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
scanExpression.addFilterCondition("title", new Condition()
.withComparisonOperator(ComparisonOperator.CONTAINS)
.withAttributeValueList(new AttributeValue().withS(query)));
return dynamoDBMapper.scan(BlogEntity.class, scanExpression);
} catch (Exception ex) {
log.error("failed to get blogs > " query);
}
return null;
}
Комментарии:
1. searchEntity — это список BlogEntity . BlogDetailsResponse — это не список, это объект. Пожалуйста, предоставьте более подробную информацию о коде BlogDetailsResponse и BlogEntity.
Ответ №1:
Это решило мою проблему. Мне нужно было сопоставить список и скрыть каждую сущность.
public List<BlogDetailsResponse> searchBlogs(SearchBlogsRequest searchBlogsRequest) {
try {
return blogsRepository.searchBlogs(searchBlogsRequest.getSearchBlogsQuery()).stream().map(e -> objectMapper
.convertValue(e, BlogDetailsResponse.class))
.collect(Collectors.toList());
} catch (final Exception exception) {
log.error(exception);
throw new DevSquareDynamoDBException(ExceptionConstants.SERVICE_SEARCH_BLOGS_EXCEPTION_MESSAGE, exception);
}
}