Исключение нулевого указателя при вставке записи через почтальона в Spring Boot с использованием Data JPA - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь опубликовать одну запись, используя почтальон, используя пружинные данные JPA, и я получаю исключение нулевого указателя. Я не знаю, что происходит с ошибкой в ​​запросе, в коде нет ошибки, но он показывает внутреннюю ошибку сервера. Пожалуйста, кто-нибудь, помогите мне

Контроллер ->

@RestController
@RequestMapping("/api")
public class Controller1 {

    private  EmployeeRepository erepo;
    @GetMapping("/getEmployee")
    public ResponseEntity<Object> get(){
        List<Employee> findAll = erepo.findAll();
        return new ResponseEntity<Object>(findAll,HttpStatus.OK);

    }

    @PostMapping("/postEmployee")
    public String post(@RequestBody Employee emp){
        System.out.println(emp.getName());
        System.out.println(emp.getId());
        erepo.save(emp);

        return "string";
    }   
}

-> Entity

@Entity
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    private String name;
    public Employee() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Employee(String name) {
        super();
        this.name = name;
    }
    public Employee(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

-> JpaRepoitory

public interface EmployeeRepository  extends JpaRepository<Employee,Integer>{


}

-> application.properties

server.port=8082


spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ajax1
spring.datasource.username=root
spring.datasource.password=rajat

spring.jpa.hibernate.ddl-auto = update

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

-> Запрос почтальона

Url-->http://localhost:8082/api/postEmployee
body-->{
    "id":1,

    "name":"kanha"
}

Ошибка стека фреймов ->

java.lang.NullPointerException: null
    at com.example.demo.controller.Controller1.post(Controller1.java:31) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_191]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]

1 Ответ

1 голос
/ 17 января 2020

Вы должны использовать внедрение зависимостей. Здесь private EmployeeRepository erepo равно null , что приводит к java .lang.NullPointerException: null

Изменить

private EmployeeRepository erepo;

На

@Autowired private EmployeeRepository erepo;

Примечание: вам не нужно передавать "id":1, поскольку вы используете @GeneratedValue(strategy=GenerationType.AUTO)

...