gpt4 book ai didi

java - Elasticsearch "org.springframework.http.converter.HttpMessageNotWritableException"

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:55 26 4
gpt4 key购买 nike

我正在尝试运行这个简单的 spring boot - elasticsearch 应用程序,但是当我 GET/localhost:8080/findAll 时,我收到此错误:

{
"timestamp": 1549021796136,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.http.converter.HttpMessageNotWritableException",
"message": "Could not write JSON: (was java.lang.NullPointerException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl[\"facets\"])",
"path": "/findAll"}

我有非常简单的类和接口(interface):

Customer.java

package com.example.demogradleNew.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@AllArgsConstructor
@NoArgsConstructor
@Data
@Document(indexName = "christouandr", type = "customer", shards = 2)
public class Customer {

@Id
private String id;
private String firstName;
private String lastName;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}
}

CustomerRepository.java

@Repository
public interface CustomerRepository extends ElasticsearchRepository<Customer, String> {
List<Customer> findByFirstName(String firstName);
}

DemogradleNewApplication.java

package com.example.demogradleNew;

import com.example.demogradleNew.model.Customer;
import com.example.demogradleNew.repository.CustomerRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@SpringBootApplication
@RestController
public class DemogradleNewApplication {

@Autowired
private CustomerRepository repository;

@GetMapping("/findAll")
public Iterable<Customer> findAllCustomers() {
return repository.findAll();
}

@GetMapping("/findByName/{firstName}")
public List<Customer> findByName(@PathVariable String firstName){
return repository.findByFirstName(firstName);
}

@PostMapping("/saveCustomer")
public int saveCustomer(@RequestBody List<Customer> customers){
repository.save(customers);
return customers.size();
}


public static void main(String[] args) {
SpringApplication.run(DemogradleNewApplication.class, args);
}

}

我的build.gradle文件如下:

buildscript {
ext {
springBootVersion = '1.5.19.BUILD-SNAPSHOT'
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'eclipse'


group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
compileOnly 'org.projectlombok:lombok'
}

我尝试了这篇文章所说的所有内容,但仍然遇到相同的错误。当我使用 Maven 时,我的代码可以完美运行。但是当我使用 Gradle 时,我收到此错误。我一直在寻找几个小时来解决这个问题,但我还没有找到答案。谢谢!

最佳答案

好的,伙计们,我找到答案了!令人惊讶的是,将其添加到 DemogradleNewApplication.java 解决了问题!

import com.google.common.collect.Lists;

public List<Customer> findAll() {
return Lists.newArrayList(repository.findAll());
}

因此,最终的 DemogradleNewApplication.java 文件如下!

package com.example.demogradleNew;

import com.example.demogradleNew.model.Customer;
import com.example.demogradleNew.repository.CustomerRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import com.google.common.collect.Lists;


@SpringBootApplication
@RestController
public class DemogradleNewApplication {

@Autowired
private CustomerRepository repository;

@GetMapping("/findAll")
public List<Customer> findAll() {
return Lists.newArrayList(repository.findAll());
}
@GetMapping("/findByName/{firstName}")
public List<Customer> findByName(@PathVariable String firstName){
return repository.findByFirstName(firstName);
}

@PostMapping("/saveCustomer")
public int saveCustomer(@RequestBody List<Customer> customers){
repository.save(customers);
return customers.size();
}


public static void main(String[] args) {
SpringApplication.run(DemogradleNewApplication.class, args);
}

}

关于java - Elasticsearch "org.springframework.http.converter.HttpMessageNotWritableException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54479300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com