Boa noite a todos, estou com um problema aonde eu estou estudando java, e criei algumas classes, porém so tenho o retorno da exception “java.lang.NullPointerException”, por favor ajudem-me.
Contact
package br.com.agenda.models;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.validator.constraints.NotBlank;
import br.com.agenda.models.Phone;
@Entity
@Table(name="tblContacts")
public class Contact {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="idContacts")
private Integer id;
@NotBlank
@Column(name="nameContacts")
private String name;
@NotBlank
@Column(name="emailContacts")
private String email;
@OneToMany(mappedBy = "contact", targetEntity = Phone.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Phone> phones;
public List<Phone> getPhones() {
return phones;
}
public void setPhones(List<Phone> phones) {
this.phones = phones;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Phone
package br.com.agenda.models;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.validator.constraints.NotBlank;
@Entity
@Table(name = "tblPhones")
public class Phone {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="idPhones")
private Integer id;
@NotBlank
@Column(name="dddPhones")
private Integer ddd;
@NotBlank
@Column(name="numberPhones")
private Integer number;
@ManyToOne
@JoinColumn(name="idContacts")
private Contact contact;
public Contact getContact() {
return contact;
}
public void setContact(Contact contact) {
this.contact = contact;
}
public Integer getDdd() {
return ddd;
}
public void setDdd(Integer ddd) {
this.ddd = ddd;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
}
ContactController
package br.com.agenda.controllers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import br.com.agenda.interfaces.IContactService;
@Controller
@RequestMapping("/contact")
public class ContactController {
@Autowired
private static IContactService contactService;
@RequestMapping(method=RequestMethod.GET)
public ModelAndView listContact()
{
ModelAndView modelAndView = new ModelAndView("contacts");
modelAndView.addObject("contacts", contactService.searchId(1));
return modelAndView;
}
}
ServiceContact
package br.com.agenda.services;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.agenda.daos.ContactDAO;
import br.com.agenda.interfaces.IContactService;
import br.com.agenda.models.Contact;
@Service
public class ContactService implements IContactService {
@Autowired
private ContactDAO contactDAO = new ContactDAO();
public void save(Contact contact) {
contactDAO.save(contact);
}
public Contact searchId(Integer id) {
return contactDAO.search(id);
}
public List<Contact> listAll() {
return contactDAO.listAll();
}
public List<Contact> listSpecific(String field, String value) {
return null;
}
}
ContactDAO
package br.com.agenda.daos;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import br.com.agenda.models.Contact;
@Repository
public class ContactDAO {
@PersistenceContext
private EntityManager manager;
public void save(Contact contact)
{
try
{
if (contact.getId() != null)
{
manager.persist(contact);
} else
{
manager.merge(contact);
}
} catch(RuntimeException e)
{
System.out.println(e.getMessage());
} catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public Contact search(Integer id)
{
try
{
return manager.find(Contact.class, id);
} catch(RuntimeException e)
{
System.out.print(e.getMessage());
return null;
} catch(Exception e)
{
System.out.println(e.getMessage());
return null;
}
}
public List<Contact> listAll()
{
return manager.createQuery("SELECT c FROM Contact c JOIN FETCH c.phones", Contact.class).getResultList();
}
}
Lista de erros
type Exception report
message Request processing failed; nested exception is java.lang.NullPointerException
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NullPointerException
br.com.agenda.controllers.ContactController.listContact(ContactController.java:21)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.5.11 logs.