Problema com jpa/hibernate

6 respostas
E

Bom, quando eu vou persistir uma classe que não depende de outra, ocorre tudo normal.
Mas, no caso, uma LOCADORA, um dependente tem de está associado a um cliente. Ai quando eu vou persistir o dependente da erro.
Vamos aos códigos e ao erro:

jpaDAO
package br.sicofi.locadora.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

public abstract class jpaDAO {

	private EntityManagerFactory emf;  
	private EntityManager em;  
	private EntityTransaction et;  

	public jpaDAO() {  
		emf = Persistence.createEntityManagerFactory("locadora");  
		em = emf.createEntityManager();  
		et = em.getTransaction();  
	}  

	public EntityManagerFactory getEmf() {  
		if(emf == null)
			emf = Persistence.createEntityManagerFactory("locadora");  
		return emf;  
	}  

	public EntityManager getEm() {  
		return em;  
	}  

	public EntityTransaction getEt() {  
		return et;  
	}  
}
DependenteDAO
package br.sicofi.locadora.dao;

import java.util.List;

import javax.persistence.EntityTransaction;
import javax.persistence.Query;

import br.sicofi.locadora.model.Dependente;

public class DependenteDAO extends jpaDAO {

	private static final long serialVersionUID = 1L;

		
	public int addDependente(Dependente dp) {  
		
		EntityTransaction t = getEm().getTransaction();  
		t.begin();  
		try {  
			getEm().persist(dp);  
			t.commit();  
		} catch (Exception e) {  
			e.printStackTrace();  
			t.rollback();  
		}
		return dp.getId();
	}

	public void removeDependente(Dependente dp){

		EntityTransaction t = getEm().getTransaction();
		t.begin();
		try{
			getEm().remove(dp);
			t.commit();
		}
		catch (Exception e) {
			e.printStackTrace();
			t.rollback();
		}
	}

	public void atualizaDependente(Dependente dp){

		EntityTransaction t = getEm().getTransaction();
		t.begin();
		try {
			getEm().merge(dp);
			t.commit();
		} catch (Exception e) {
			e.printStackTrace();
			t.rollback();
		} 
	}

	@SuppressWarnings("unchecked")
	public List<Dependente> getDependentes(String query,Object... params) {

		EntityTransaction t = getEm().getTransaction();
		t.begin();

		Query qr = getEm().createQuery(query);
		for(int i = 1; i<= params.length; i++)
			qr.setParameter(i,params[i-1]);

		List<Dependente> dpList = qr.getResultList();

		try{
			t.commit();
		}catch (Exception e) {
			e.printStackTrace();
			t.rollback();
		} 
		return dpList;
	}
}
DependenteFace:
package br.sicofi.locadora.faces;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import br.sicofi.locadora.dao.ClienteDAO;
import br.sicofi.locadora.dao.DependenteDAO;
import br.sicofi.locadora.model.Cliente;
import br.sicofi.locadora.model.Dependente;

public class DependenteFace {
	
	private List<Dependente> cache_dependentes = null;
	private DependenteDAO dependenteDAO = new DependenteDAO();
	private ClienteDAO clienteDAO = new ClienteDAO();
	private Dependente instanciaDependente = new Dependente();
	
	public List<Dependente> getCache_dependentes() {
		return cache_dependentes = dependenteDAO.getDependentes("from Dependente dp");
	}

	public List<SelectItem> getClientesdoSistema(){
		List<SelectItem> retornar = new ArrayList<SelectItem>();
		for(Cliente cl : clienteDAO.getClientes("from Cliente cl"))
			retornar.add(new SelectItem(cl,cl.getNome()));
		return retornar;
	}
	
	public String NovoDependente() {
		instanciaDependente = new Dependente();
		return "goNovoDependente";
	}
	
	public String TerminoNovoDependente() {
		
		if(instanciaDependente.getCliente().getDependente().size() >= 3) {
			FacesContext.getCurrentInstance().addMessage(
					null,new FacesMessage("O Cliente ja possui 3 dependentes(*)"));
			return "Refresh";
			}
		else{
			dependenteDAO.addDependente(instanciaDependente);
			return "goListaDependentes";
			}
	}
	
	public String RemoverDependente() {
		dependenteDAO.removeDependente(instanciaDependente);
		return "goListaDependentes";
	}
		
	public String AtualizaDependente(){
		return "goNovoDependente";
	}

	public String TerminoAtualizaDependente() {
		if(instanciaDependente.getId() == null){
			FacesContext.getCurrentInstance().addMessage(
					null,new FacesMessage("Comando Invalido: Nao ha dependente para atualizar"));
			return "Refresh";
		}
		else{
			dependenteDAO.atualizaDependente(instanciaDependente);
			return "goListaDependentes";
		}
	}
	
	public Dependente getInstanciaDependente() {
		return instanciaDependente;
	}

	public void setInstanciaDependente(Dependente instanciaDependente) {
		this.instanciaDependente = instanciaDependente;
	}


	
}
Dependente:
package br.sicofi.locadora.model;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import com.sun.istack.internal.NotNull;

@Entity
public class Dependente implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	private Integer id;
	
	@NotNull
	@Column(length=40)
	private String nome;
	
	@NotNull
	@Column(length=20)
	private String grau_parentesco;
	
	/*
	 * Estava Type.EAGER
	 */
	@ManyToOne(fetch = FetchType.EAGER,
			cascade={CascadeType.PERSIST, CascadeType.MERGE})
	@JoinColumn(name="cliente")
	private Cliente cliente;
	
	public Integer getId() {
		return id;
	}

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

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getGrau_parentesco() {
		return grau_parentesco;
	}

	public void setGrau_parentesco(String grau_parentesco) {
		this.grau_parentesco = grau_parentesco;
	}
		
	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Dependente other = (Dependente) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return String.valueOf(id);
	}

}
faces-config
<!-- Faces -->
	
	<managed-bean>
		<managed-bean-name>ClienteFace</managed-bean-name>
		<managed-bean-class>br.sicofi.locadora.faces.ClienteFace
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
	<managed-bean>
		<managed-bean-name>DependenteFace</managed-bean-name>
		<managed-bean-class>br.sicofi.locadora.faces.DependenteFace
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
	<managed-bean>
		<managed-bean-name>GeneroFace</managed-bean-name>
		<managed-bean-class>br.sicofi.locadora.faces.GeneroFace
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
	<managed-bean>
		<managed-bean-name>CategoriaFace</managed-bean-name>
		<managed-bean-class>br.sicofi.locadora.faces.CategoriaFace
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
	<managed-bean>
		<managed-bean-name>FilmeFace</managed-bean-name>
		<managed-bean-class>br.sicofi.locadora.faces.FilmeFace
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
       <!-- Converters -->
	
	<converter>
		<converter-id>ConverterCliente</converter-id>
		<converter-class>br.sicofi.locadora.converter.ClienteConverter</converter-class>
	</converter>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.faces</url-pattern>
	</servlet-mapping>
	<session-config>
		<session-timeout>30</session-timeout>
	</session-config>
	<welcome-file-list>
		<welcome-file>menu.xhtml</welcome-file>
	</welcome-file-list>

	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.DEVELOPMENT</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>com.sun.faces.validateXml</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>com.sun.faces.verifyObjects</param-name>
		<param-value>true</param-value>
	</context-param>

	<filter>
		<display-name>Ajax4jsf Filter</display-name>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	
	<context-param>
		<param-name>org.ajax4jsf.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>
	
	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>


</web-app>

Agora, enfim o ERRO:

javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.sicofi.locadora.model.Cliente
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
	at br.sicofi.locadora.dao.DependenteDAO.addDependente(DependenteDAO.java:20)
	at br.sicofi.locadora.faces.DependenteFace.TerminoNovoDependente(DependenteFace.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:387)
	at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.sicofi.locadora.model.Cliente
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:102)
	at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:637)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:629)
	at org.hibernate.engine.EJB3CascadingAction$1.cascade(EJB3CascadingAction.java:30)
	at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:292)
	at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:240)
	at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:193)
	at org.hibernate.engine.Cascade.cascade(Cascade.java:154)
	at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:454)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
	at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
	at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
	at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:646)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:620)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:624)
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
	... 39 more
21/07/2010 10:55:46 com.sun.faces.application.ActionListenerImpl processAction
SEVERE: java.lang.NullPointerException
javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:387)
	at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at br.sicofi.locadora.dao.DependenteDAO.addDependente(DependenteDAO.java:26)
	at br.sicofi.locadora.faces.DependenteFace.TerminoNovoDependente(DependenteFace.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 29 more
21/07/2010 10:55:46 com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{DependenteFace.TerminoNovoDependente}: java.lang.NullPointerException
javax.faces.FacesException: #{DependenteFace.TerminoNovoDependente}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:387)
	at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 28 more
Caused by: java.lang.NullPointerException
	at br.sicofi.locadora.dao.DependenteDAO.addDependente(DependenteDAO.java:26)
	at br.sicofi.locadora.faces.DependenteFace.TerminoNovoDependente(DependenteFace.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 29 more
21/07/2010 10:55:46 com.sun.faces.lifecycle.Phase doPhase
SEVERE: JSF1054: (Phase ID: INVOKE_APPLICATION 5, View ID: /novo_dependente.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@1c7eb33]
10:55:46,250 ERROR BaseXMLFilter:227 - Exception in the filter chain
javax.servlet.ServletException: #{DependenteFace.TerminoNovoDependente}: java.lang.NullPointerException
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.FacesException: #{DependenteFace.TerminoNovoDependente}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:387)
	at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	... 18 more
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 28 more
Caused by: java.lang.NullPointerException
	at br.sicofi.locadora.dao.DependenteDAO.addDependente(DependenteDAO.java:26)
	at br.sicofi.locadora.faces.DependenteFace.TerminoNovoDependente(DependenteFace.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 29 more
21/07/2010 10:55:46 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
	at br.sicofi.locadora.dao.DependenteDAO.addDependente(DependenteDAO.java:26)
	at br.sicofi.locadora.faces.DependenteFace.TerminoNovoDependente(DependenteFace.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:387)
	at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)

Bom, se puderem me ajudar, ficarei muito grato. Primeira vez que posto aqui 0/.

6 Respostas

E

Ooops, esqueci do ClienteConverter

package br.sicofi.locadora.converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import br.sicofi.locadora.dao.ClienteDAO;
import br.sicofi.locadora.model.Cliente;

public class ClienteConverter implements Converter {

	private static final long serialVersionUID = 1L;
	private ClienteDAO clienteDAO = new ClienteDAO();
	
	@Override
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		Integer id = Integer.parseInt(arg2);
		return clienteDAO.getCliente(id);
	}

	@Override
	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
		Cliente cl = (Cliente)arg2;
		return String.valueOf(cl.getId());
	}
}
Fernando_Generoso_da

Mostra a classe cliente…

E

Ok.

Cliente
package br.sicofi.locadora.model;

import java.util.Date;
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.Id;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Cascade;

import com.sun.istack.internal.NotNull;

@Entity
public class Cliente implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue
	@Column
	private Integer id;
	
	
	@NotNull
	@Column(length=60)
	private String nome; 
	
	@NotNull
	@Column(length=15)
	private String cpf; 
	
	@NotNull
	@Column	
	private String telefone; 
	
	@NotNull
	@Column(length=40)
	private String email; 
	
	@Column
	@Temporal(TemporalType.DATE)
	private Date data_nascimento; 
	
	@NotNull
	@Column(length=40)
	private String endereco;
	
	/*
	 * Era Type.EAGER
	 */
	
	@OneToMany(mappedBy="cliente",fetch=FetchType.EAGER, cascade={CascadeType.MERGE,
			CascadeType.PERSIST, CascadeType.REMOVE})
	@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
	private List<Dependente> dependente;
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getData_nascimento() {
		return data_nascimento;
	}

	public void setData_nascimento(Date data_nascimento) {
		this.data_nascimento = data_nascimento;
	}

	public List<Dependente> getDependente() {
		return dependente;
	}

	public void setDependente(List<Dependente> dependente) {
		this.dependente = dependente;
	}


	public Integer getId() {
		return id;
	}
	
	public void setId(Integer id) {
		this.id = id;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Cliente other = (Cliente) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return String.valueOf(id);
	}

	
	
}
ClienteDAO
package br.sicofi.locadora.dao;

import java.util.List;

import javax.persistence.EntityTransaction;
import javax.persistence.Query;

import br.sicofi.locadora.model.Cliente;


public class ClienteDAO extends jpaDAO {

	private static final long serialVersionUID = 1L;

	public int addCliente(Cliente cl) {  

		EntityTransaction t = getEm().getTransaction();  
		t.begin();  
		try {  
			getEm().persist(cl);  
			t.commit();  
		} catch (Exception e) {  
			e.printStackTrace();  
			t.rollback();  
		}
		return cl.getId();
	}

	public void removeCliente(Cliente cl){

		EntityTransaction t = getEm().getTransaction();
		t.begin();
		try{
			getEm().remove(cl);
			t.commit();
		}
		catch (Exception e) {
			e.printStackTrace();
			t.rollback();
		} 
	}

	public void atualizaCliente(Cliente cl){

		EntityTransaction t = getEm().getTransaction();
		t.begin();
		try {
			getEm().merge(cl);
			t.commit();
		} catch (Exception e) {
			e.printStackTrace();
			t.rollback();
		} 
	}
	
	public Cliente getCliente(int clienteID){
		
		EntityTransaction t = getEm().getTransaction();
		t.begin();
		Cliente cl = getEm().getReference(Cliente.class, clienteID);
		try{
			t.commit();
		} catch (Exception e) {
			
		}
		return cl;
	}
	
	public Cliente getInstanciaCliente() {
		return instanciaCliente;
	}

	public void setInstanciaCliente(Cliente instanciaCliente) {
		this.instanciaCliente = instanciaCliente;
	}


}
e ClienteFace
package br.sicofi.locadora.faces;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import br.sicofi.locadora.dao.ClienteDAO;
import br.sicofi.locadora.model.Cliente;

public class ClienteFace {

	private List<Cliente> cache_clientes = null;
	private ClienteDAO clienteDAO = new ClienteDAO();
	private Cliente instanciaCliente = new Cliente();

	public List<Cliente> getCache_clientes() {
		return	cache_clientes = clienteDAO.getClientes("from Cliente cl");
	}

	public String NovoCliente() {
		instanciaCliente = new Cliente();
		return "goNovoCliente";

	}

	public String TerminoNovoCliente() {
		if(ProcuraCPF()) {
			FacesContext.getCurrentInstance().addMessage(
					null,new FacesMessage("Esse CPF já existe(*)"));
			return "Refresh";
		}
		else {
			clienteDAO.addCliente(instanciaCliente);
			return "goListaClientes";
		}
	}

	public String AtualizaCliente(){
		return "goNovoCliente";
	}

	public String TerminoAtualizaCliente() {
		if(instanciaCliente.getId() == null){
			FacesContext.getCurrentInstance().addMessage(
					null,new FacesMessage("Comando Invalido: Nao ha cliente para atualizar"));
			return "Refresh";
		}
		else{
			clienteDAO.atualizaCliente(instanciaCliente);
			return "goListaClientes";
		}
	}

	public boolean ProcuraCPF() {
		for(Cliente cl : clienteDAO.getClientes("from Cliente cl"))
			if(	instanciaCliente.getCpf().equals(cl.getCpf()))  
				return true;
		return false;
	}

	public String RemoverCliente() {
		clienteDAO.removeCliente(instanciaCliente);
		return "goListaClientes";
	}
	
	/*public String getPesquisaPorNome(){
		clienteDAO.getClientesPorNome(instanciaCliente.getNome());
		return "goListaPesquisa";
	}
	*/
	public Cliente getInstanciaCliente() {
		return instanciaCliente;
	}

	public void setInstanciaCliente(Cliente instanciaCliente) {
		this.instanciaCliente = instanciaCliente;
	}


}

Pronto

Fernando_Generoso_da

Tenta isso:

@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
	@Cascade(value = { org.hibernate.annotations.CascadeType.SAVE_UPDATE,
			org.hibernate.annotations.CascadeType.DELETE_ORPHAN })

e em dependentes,retira esse trecho:

@ManyToOne(fetch = FetchType.EAGER,  
            cascade={CascadeType.PERSIST, CascadeType.MERGE})  
     @JoinColumn(name="cliente")  
     private Cliente cliente;

porém dessa forma, será apenas unidirecional o acesso…não sei se resolve o seu problema.

Fernando

E

Bom, vlw por responder.

Mas, como você disse, vai ficar apenas unidirecional, ai num pode ;(

Quando eu tava usando sessionFactory e talz, taava dando tudo certinho. Ai tive de mudar pra EntityManager e ta dando esse erro :frowning:

cheat.

E

Quando eu desabilitei o <f:converter> deu erro de conversão e quando da habilitado da esse erro do NullPointerException.
Será minha conversão errada?

Alguém helps 0/

Criado 21 de julho de 2010
Ultima resposta 21 de jul. de 2010
Respostas 6
Participantes 2