Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Bug ao usar Spring, Hibernate

$
0
0

@MarcosMiranda escreveu:

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.

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>