Ola pessoal estou fazendo um cadastro simples de cliente.
ele da o sequinte erro ao clicar em inserir cliente:
GRAVE: java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
javax.faces.event.AbortProcessingException: java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:772)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
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.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
at org.hibernate.event.SaveOrUpdateEvent.<init>(SaveOrUpdateEvent.java:40)
at org.hibernate.event.SaveOrUpdateEvent.<init>(SaveOrUpdateEvent.java:23)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at Dao.ClienteDaoImpl.save(ClienteDaoImpl.java:23)
at controller.ClienteController.adicionarCliente(ClienteController.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)
... 24 more
Segue o codigo
modelo
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package modelo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
*
* @author Fred
*/
@Entity
@Table(name="cliente")
public class Cliente implements Serializable {
@Id
@GeneratedValue
private Long id;
private String nome;
public Cliente(){
}
public Cliente(Long id, String nome){
this.nome = nome;
this.id = id;
}
/**
* @return the id
*/
public Long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
}
dao
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Dao;
import Utils.HibernateUtil;
import java.util.List;
import modelo.Cliente;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
*
* @author Fred
*/
public class ClienteDaoImpl implements ClienteDao {
public void save(Cliente cliente) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.save(cliente);
t.commit();
}
public Cliente getCliente(long id) {
Session session = HibernateUtil.getSessionFactory().openSession();
return (Cliente) session.load(Cliente.class, id);
}
public List<Cliente> list() {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
List lista = session.createQuery("from Cliente").list();
t.commit();
return lista;
}
public void remove(Cliente cliente) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.delete(cliente);
t.commit();
}
public void update(Cliente cliente) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.update(cliente);
t.commit();
}
}
Controller
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controller;
import Dao.ClienteDao;
import Dao.ClienteDaoImpl;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import modelo.Cliente;
/**
*
* @author Fred
*/
@ManagedBean
@SessionScoped
public class ClienteController {
private Cliente cliente;
private DataModel listaClientes;
public DataModel getListarClientes() {
List<Cliente> lista = new ClienteDaoImpl().list();
listaClientes = new ListDataModel(lista);
return listaClientes;
}
public Cliente getCliente() {
if(cliente == null){
return new Cliente();
} else {
return cliente;
}
}
public void setEditora(Cliente cliente) {
this.cliente = cliente;
}
public void prepararAdicionarCliente(){
cliente = new Cliente();
}
public void prepararAlterarCliente(ActionEvent actionEvent){
cliente = (Cliente)(listaClientes.getRowData());
}
public String excluirCliente(){
Cliente clienteTemp = (Cliente)(listaClientes.getRowData());
ClienteDao dao = new ClienteDaoImpl();
dao.remove(clienteTemp);
return "index";
}
public void adicionarCliente(){
ClienteDao dao = new ClienteDaoImpl();
dao.save(cliente);
}
public void alterarCliente(ActionEvent actionEvent){
ClienteDao dao = new ClienteDaoImpl();
dao.update(cliente);
}
}
o jsf
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid id="cliente" columns="2" style="margin-bottom:10px">
<h:outputLabel for="nome" value="Nome:" />
<h:inputText id="titulo" value="#{clienteController.cliente.nome}"/>
<p:commandButton actionListener="#{clienteController.adicionarCliente}" value="Inserir Cliente"/>
<p:commandButton actionListener="#{clienteController.alterarCliente}" value="Alterar Cliente"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
Alguem pode me ajudar?