I’m new on SpringBoot and I’m making a small CRUD. When I try to make a GET request that show me a list of soccer teams from my BD called “soccer” I’ve have the following error message:
java.lang.NullPointerException: Cannot invoke "com.balamcode.repo.EquipoRepo.findAll()" because "this.equiporepo" is null at com.balamcode.servicio.EquipoServicio.findAll(EquipoServicio.java:22) ~[classes/:na] at com.balamcode.rest.EquipoREST.getAllEquipos(EquipoREST.java:23) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.12.jar:5.3.12] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.12.jar:5.3.12] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.12.jar:5.3.12] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.12.jar:5.3.12] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.54.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.12.jar:5.3.12] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.54.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.54.jar:9.0.54] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.12.jar:5.3.12] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.12.jar:5.3.12] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.12.jar:5.3.12] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.54.jar:9.0.54] at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]
My model “Equipo” is:
package com.balamcode.modelos; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table (name = "equipo") public class Equipo { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String nombre; public Equipo() { } public Equipo(String nombre) { super(); this.nombre = nombre; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } }
My Repositorie “EquipoRepo” is
package com.balamcode.repo; import org.springframework.data.jpa.repository.JpaRepository; import com.balamcode.modelos.Jugador; public interface JugadorRepo extends JpaRepository<Jugador, Integer>{ }
My service “EquipoServicio” is:
package com.balamcode.servicio; import java.util.List; import java.util.Optional; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import com.balamcode.modelos.Equipo; import com.balamcode.repo.EquipoRepo; @Service public class EquipoServicio implements EquipoRepo{ private EquipoRepo equiporepo; @Override public List<Equipo> findAll() { return equiporepo.findAll(); } @Override public List<Equipo> findAll(Sort sort) { // TODO Auto-generated method stub return null; } @Override public List<Equipo> findAllById(Iterable<Integer> ids) { // TODO Auto-generated method stub return null; } @Override public <S extends Equipo> List<S> saveAll(Iterable<S> entities) { // TODO Auto-generated method stub return null; } @Override public void flush() { // TODO Auto-generated method stub } @Override public <S extends Equipo> S saveAndFlush(S entity) { // TODO Auto-generated method stub return null; } @Override public <S extends Equipo> List<S> saveAllAndFlush(Iterable<S> entities) { // TODO Auto-generated method stub return null; } @Override public void deleteAllInBatch(Iterable<Equipo> entities) { // TODO Auto-generated method stub } @Override public void deleteAllByIdInBatch(Iterable<Integer> ids) { // TODO Auto-generated method stub } @Override public void deleteAllInBatch() { // TODO Auto-generated method stub } @Override public Equipo getOne(Integer id) { // TODO Auto-generated method stub return null; } @Override public Equipo getById(Integer id) { // TODO Auto-generated method stub return null; } @Override public <S extends Equipo> List<S> findAll(Example<S> example) { // TODO Auto-generated method stub return null; } @Override public <S extends Equipo> List<S> findAll(Example<S> example, Sort sort) { // TODO Auto-generated method stub return null; } @Override public Page<Equipo> findAll(Pageable pageable) { // TODO Auto-generated method stub return null; } @Override public <S extends Equipo> S save(S entity) { return equiporepo.save(entity); } @Override public Optional<Equipo> findById(Integer id) { // TODO Auto-generated method stub return null; } @Override public boolean existsById(Integer id) { // TODO Auto-generated method stub return false; } @Override public long count() { // TODO Auto-generated method stub return 0; } @Override public void deleteById(Integer id) { // TODO Auto-generated method stub } @Override public void delete(Equipo entity) { // TODO Auto-generated method stub } @Override public void deleteAllById(Iterable<? extends Integer> ids) { // TODO Auto-generated method stub } @Override public void deleteAll(Iterable<? extends Equipo> entities) { // TODO Auto-generated method stub } @Override public void deleteAll() { // TODO Auto-generated method stub } @Override public <S extends Equipo> Optional<S> findOne(Example<S> example) { // TODO Auto-generated method stub return null; } @Override public <S extends Equipo> Page<S> findAll(Example<S> example, Pageable pageable) { // TODO Auto-generated method stub return null; } @Override public <S extends Equipo> long count(Example<S> example) { // TODO Auto-generated method stub return 0; } @Override public <S extends Equipo> boolean exists(Example<S> example) { // TODO Auto-generated method stub return false; } }
And my REST class called “EquipoREST” is:
package com.balamcode.rest; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.balamcode.modelos.Equipo; import com.balamcode.servicio.EquipoServicio; @RestController @RequestMapping("/equipo/") public class EquipoREST { @Autowired private EquipoServicio equipoServicio; @GetMapping public ResponseEntity<List<Equipo>> getAllEquipos(){ return ResponseEntity.ok(equipoServicio.findAll()); } }
Advertisement
Answer
Try to add @Autowired
annotation in EquipoServicio
.
@Autowired private EquipoRepo equiporepo;