我试图用Spring Boot 1.5.3和Elasticsearch为我的api实现分页,但是它返回HttpMessageNotWritableException:不能写JSON文档。
我认为ElasticsearchRepository已经提供了分页和排序方法,因此我尝试使用它然后将可分页的对象返回给控制器。而且我认为控制器返回结果时会发生错误。
这是控制器。
@GetMapping(value = "/client",
params = { "page", "size" })
public Page<Client> getAllClient( @RequestParam("page") int page, @RequestParam("size") int size){
return clientService.getAllClient(page, size);
}
服务。
public Page<Client> getAllClient(int page, int size) {
Page<Client> resultPage = clientRepository.findAll(new PageRequest(0, 3));
return resultPage;
}
存储库。
public interface ClientRepository extends
ElasticsearchRepository<Client, String> {
public Client findByName(String name);
}
我已经将Lombok用于我的实体,所以应该不是问题。
@Data
@Document(indexName = "customer", type = "client")
public class Client {
@Id
private String id;
private String name;
private String city;
private String phone;
}
pom.xml中的依赖项
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
<scope>provided</scope>
</dependency>
</dependencies>
当我向与控制器映射的URL发出HTTP GET请求时,出现以下错误日志。
WARN 12616 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON document: (was java.lang.NullPointerException) (through reference chain: org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl["facets"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl["facets"])
我想知道我是否忘记了项目中的任何配置。
答案 0 :(得分:-1)
我刚刚发现,在我更改为Spring Boot版本2.0.4之后,它可以工作!
但是我仍然想知道如何在1.5.3版中做到这一点。