Pessoal ao clicar no Buttom “Cofirmar” pra gravar no banco de dados ele apresenta um erro 500 reclamando da Entydade NUll (java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity), Alguem me ajuda por favor.
Manager Bean
[code]package secretaria.faces;
import java.util.List;
import secretaria.dao.CadSecretariaDAO;
import secretaria.entidade.CadastrarSecretaria;
public class Secretaria{
private List<CadastrarSecretaria> cachedCadSecretarias = null;
private CadSecretariaDAO cadsec = new CadSecretariaDAO();
private CadastrarSecretaria selectedSecretaria;
public Secretaria() {
}
public List<CadastrarSecretaria> getCachedCadSecretaria() {
if (cachedCadSecretarias == null){
cachedCadSecretarias = cadsec.getCadSecretairas();
}
return cachedCadSecretarias;
}
public String doConfirmaCadSecretaria(){
selectedSecretaria = new CadastrarSecretaria();
return "ConfirmarNovoUsuario";
}
public String finishConfirmaCadSecretaria(){
cadsec.addCadastrarSecretaria(selectedSecretaria);
cachedCadSecretarias = null;
return "ListCadSecretaria";
}
public CadastrarSecretaria getSelectedSecretaria() {
return selectedSecretaria;
}
public void setSelectedSecretaria(CadastrarSecretaria selectedSecretaria) {
this.selectedSecretaria = selectedSecretaria;
}
}[/code]
Classe DAO
[code]package secretaria.dao;
import java.util.List;
import org.hibernate.Session;
import secretaria.entidade.CadastrarSecretaria;
public class CadSecretariaDAO extends GenericDAO {
private static final long serialVersionUID=1L;
private Session session;
public CadSecretariaDAO(Session session) {
this.session = session;
}
public CadSecretariaDAO() {
this.session = getSession();
}
public int addCadastrarSecretaria(CadastrarSecretaria cad) {
saveOrUpadatePojo(cad);
return cad.getCodigosecretaria();
}
public void removeCadastrarSecretaria(CadastrarSecretaria cad) {
removePojo(cad);
}
public void upadateCadastrarSecretaria(CadastrarSecretaria cad) {
saveOrUpadatePojo(cad);
}
public CadastrarSecretaria getCadastrarSecretaria(Integer codigosecretaria) {
CadastrarSecretaria cad = getPojo(CadastrarSecretaria.class, codigosecretaria);
return cad;
}
public List<CadastrarSecretaria> getCadSecretairas(){
return getPureList(CadastrarSecretaria.class,"from CadastrarSecretaria cad");
}
}[/code]
Classe Entidade (Reclama que não existe uma unidade de persistência)
[code]package secretaria.entidade;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
@Table(name = “cadsecretaria”)
public class CadastrarSecretaria implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "codigosecretaria", nullable = false)
@GeneratedValue (strategy= GenerationType.SEQUENCE)
private Integer codigosecretaria;
@Column(name = "nome", nullable = false)
private String nome;
@Column(name = "status", nullable = false)
private char status;
@Column(name = "codoperinc", nullable = false)
private Integer codoperinc;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(name = "datainclusao", nullable = false)
private Date datainclusao;
@Column(name = "codoperalt", nullable = false)
private Integer codoperalt;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(name = "dataalteracao", nullable = false)
private Date dataalteracao;
@OneToMany(mappedBy=“secretaria”, fetch=FetchType.LAZY)
private List cadastrarSolicitante;
@OneToMany (mappedBy=“sectecnico”, fetch=FetchType.LAZY)
private List cadastrarTecnico;
@OneToMany (mappedBy=“cadSecretaria”, fetch=FetchType.LAZY)
private List cadastrarEquipamento;
public Integer getCodigosecretaria() {
return codigosecretaria;
}
public void setCodigosecretaria(Integer codigosecretaria) {
this.codigosecretaria = codigosecretaria;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public char getStatus() {
return status;
}
public void setStatus(char status) {
this.status = status;
}
public Integer getCodoperinc() {
return codoperinc;
}
public void setCodoperinc(Integer codoperinc) {
this.codoperinc = codoperinc;
}
public Date getDatainclusao() {
return datainclusao;
}
public void setDatainclusao(Date datainclusao) {
this.datainclusao = datainclusao;
}
public Integer getCodoperalt() {
return codoperalt;
}
public void setCodoperalt(Integer codoperalt) {
this.codoperalt = codoperalt;
}
public Date getDataalteracao() {
return dataalteracao;
}
public void setDataalteracao(Date dataalteracao) {
this.dataalteracao = dataalteracao;
}
public List<CadastrarSolicitante> getCadastrarSolicitante() {
return cadastrarSolicitante;
}
public void setCadastrarSolicitante(List<CadastrarSolicitante> cadastrarSolicitante) {
this.setCadastrarSolicitante(cadastrarSolicitante);
}
public List<CadastrarTecnico> getCadastrarTecnico() {
return cadastrarTecnico;
}
public void setCadastrarTecnico(List<CadastrarTecnico> cadastrarTecnico) {
this.setCadastrarTecnico(cadastrarTecnico);
}
public List<CadastrarEquipamento> getCadastrarEquipamento() {
return cadastrarEquipamento;
}
public void setCadastrarEquipamento(List<CadastrarEquipamento> cadastrarEquipamento) {
this.cadastrarEquipamento = cadastrarEquipamento;
}
DAO Generic
[code]package secretaria.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import secretaria.entidade.HibernateUtil;
public abstract class GenericDAO {
public GenericDAO() {
}
protected Session getSession() {
return HibernateUtil.getInstance().getSession();
}
protected void saveOrUpadatePojo(Serializable pojo){
Session ses = getSession();
ses.saveOrUpdate(pojo);
ses.getTransaction().commit();
ses.close();
}
protected <T extends Serializable> T getPojo (Class <T> classToSearch, Serializable key) {
Session ses = getSession();
Serializable toReturn = (Serializable) ses.get(classToSearch, key);
ses.getTransaction().commit();
ses.close();
return (T) toReturn;
}
protected void removePojo (Serializable pojoToRemote){
Session ses = getSession();
ses.delete(pojoToRemote);
ses.getTransaction().commit();
ses.close();
}
protected Serializable getPurePojo(String query, Object... params){
Session ses = getSession();
Query qr= ses.createQuery(query);
for(int i = 1; i <= params.length; i++)
{
qr.setParameter(1, params[i-1]);
}
Object toReturn = qr.uniqueResult();
ses.getTransaction().commit();
ses.close();
return(Serializable) toReturn;
}
protected <T extends Serializable> List <T> getPureList(Class <T> classToCast, String query, Object... params){
Session ses = getSession();
Query qr= ses.createQuery(query);
for(int i = 1; i <= params.length; i++)
{
qr.setParameter(1, params[i-1]);
}
@SuppressWarnings(“unchecked”)
List toReturn = qr.list();
ses.getTransaction().commit();
ses.close();
return toReturn;
}
}[/code]
}[/code]
Minha pagina XHTML pro cadastro da secretaria.
[code]<?xml version="1.0" encoding="UTF-8"?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Cadastrar Secretarias</title>
</head>
<body title="Cadastrar Secretarias" style="background-color: green">
<h:panelGrid columns="6">
<rich:panel>
<f:facet name="header">
<h:outputText value="CADASTROS SECRETARIAS"/>
</f:facet>
<a4j:form ajaxSubmit="true" reRender="name">
<h:inputText label="nome" size="10" style="width:auto"/>
<a4j:commandButton id="incluir" value="Incluir"/>
<a4j:commandButton id="alterar" value="Alterar"/>
<a4j:commandButton id="deletar" value="Deletar"/>
<a4j:commandButton id="consultar" value="Consultar"/>
<a4j:commandButton id="confirmar" value="Confirmar" action="#{Secretaria.finishConfirmaCadSecretaria}"/>
<a4j:commandButton id="cancelar" value="Cancelar"/>
<br/>
</a4j:form><br></br>
<h:form>
Codigo Secretaria:<h:inputText value="#{Secretaria.selectedSecretaria.codigosecretaria}"/><br/>
Nome:<h:inputText value="#{Secretaria.selectedSecretaria.nome}"/><br/>
Status <h:selectOneRadio label="Ativo" value="#{Secretaria.selectedSecretaria.status}"/>
</h:form>
</rich:panel>
</h:panelGrid>
</body>
[/code]
[code]HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: #{Secretaria.finishConfirmaCadSecretaria}: java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause
javax.faces.FacesException: #{Secretaria.finishConfirmaCadSecretaria}: java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause
javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause
java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
org.hibernate.event.SaveOrUpdateEvent.(SaveOrUpdateEvent.java:63)
org.hibernate.event.SaveOrUpdateEvent.(SaveOrUpdateEvent.java:46)
org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:527)
org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:523)
secretaria.dao.GenericDAO.saveOrUpadatePojo(GenericDAO.java:20)
secretaria.dao.CadSecretariaDAO.addCadastrarSecretaria(CadSecretariaDAO.java:22)
secretaria.faces.Secretaria.finishConfirmaCadSecretaria(Secretaria.java:31)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:623)
org.apache.el.parser.AstValue.invoke(AstValue.java:172)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.[/code]