Pessoal estou tentanto persistir um Objeto no banco é esta gerando um erro de que desconheço, a principio pensei que fosse mapeamendo do hibernet, mas refiz novamente e não adiantou.
Segue Bean
@javax.faces.bean.ManagedBean(name = "acaoFiscalBean")
@SessionScoped
public class AcaoFiscalBean {
//Persiste Objeto no banco
public String salvar() {
AcaoFiscalRN acaoFiscalRN = new AcaoFiscalRN();
Calendar cal = GregorianCalendar.getInstance();
acaoFiscal.setFiscalresponsavel(consultaAgenteFiscalProcesso
.getAgenteFiscal());
acaoFiscal.setDataHoraInicioAcao(data);
acaoFiscal.setMotivacao(motivacao);
acaoFiscal.setEstado("ANDAMENTO");
acaoFiscal.setPrazo(MammonUtil.addDias(data, 120));
acaoFiscal.setPessoa(contribuinte.getIdPessoa().intValue());
acaoFiscal.setFk_processo(consultaAgenteFiscalProcesso.getFk_processo());
consultaAgenteFiscalProcesso.setEstado_processo(Constant.PROCESSO_ESTADO_FISCALIZACAO);
acaoFiscal.setNumero(geraNumeroAcaoFiscal());
acaoFiscalRN.salvar(acaoFiscal);
return "";
}
Segue XHTML
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Cadastro de Infrações
version 10/10/2011 Marcio v1.0 Versão inicial -->
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition template="/templates/common.xhtml">
<ui:define name="title">Mammon - Ação Fiscal</ui:define>
<ui:define name="conteudo">
<h2>Ação Fiscal</h2>
<h:form id="acaofiscal">
<p:growl id="mgs" autoUpdate="true" />
<div class="campo-grupo">
<h3>
<h:outputLabel value="Número Ação Fiscal:" />
</h3>
</div>
<div class="campo-grupo">
<h3>
<h:outputLabel value="Situação:" style="margin-left: 350px" />
</h3>
</div>
<div style="clear: both;"></div>
<div class="campo-simples">
<h3>
<h:outputLabel
value="Número do processo: #{acaoFiscalBean.consultaAgenteFiscalProcesso.numero_processo}"
style="text-align:left" />
</h3>
</div>
<div class="campo-simples">
<p:fieldset id="acfiscal" legend="Fiscal Participante"
toggleable="true">
<div class="campo-grupo">
<h:outputLabel value="Matrícula" />
<p:inputText id="mat"
value="#{acaoFiscalBean.agenteFiscal.codigoFuncional}" size="15"
readonly="true">
</p:inputText>
</div>
<div class="campo-grupo">
<h:outputLabel value="Nome" />
<p:selectOneMenu id="nome" value="#{acaoFiscalBean.agenteFiscal}"
converter="fiscalConversor" style="width:500px" immediate="true">
<f:selectItem itemLabel="SELECIONE UM FISCAL" itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{acaoFiscalBean.listaAgenteFiscais}"
var="lista" itemValue="#{lista}" itemLabel="#{lista.nome}" />
<p:ajax event="change"
update="acaofiscal:mat, acaofiscal:tel, acaofiscal:mail " />
</p:selectOneMenu>
</div>
<div style="clear: both;"></div>
<div class="campo-grupo">
<h:outputLabel value="Telefone" />
<p:inputMask id="tel"
value="#{acaoFiscalBean.agenteFiscal.telefone}" readonly="true"
size="15" mask="(99) 9999-9999" />
</div>
<div class="campo-grupo">
<h:outputLabel value="E-mail" />
<p:inputText id="mail"
value="#{acaoFiscalBean.agenteFiscal.email}" size="80"
readonly="true" />
</div>
<div style="clear: both;"></div>
<div class="campo-simple">
<p:commandButton value="Incluir"
action="#{acaoFiscalBean.inserirFiscal}"
update="tabela, acfiscal" ajax="false" title="Incluir de fiscal participante"/>
</div>
<h:outputLabel
value="Nome: #{acaoFiscalBean.consultaAgenteFiscalProcesso.agenteFiscal.nome}" />
<div class="campo-simples">
<p:dataTable id="tabela" var="fiscal"
emptyMessage="NÃO HÁ FISCAL PARTICIPANTE CADASTRADO"
value="#{acaoFiscalBean.acaoFiscal.fiscalparticipante}">
<p:column style="width:90px; text-align:left">
<f:facet name="header">Fiscal</f:facet>
<h:outputText value="#{fiscal.nome}" />
<h:outputText value="#{resp.nome}" />
</p:column>
<p:column style="width:30px; text-align:center">
<f:facet name="header">Função</f:facet>
<h:outputText value="#{fiscal.cargo}" />
</p:column>
<p:column style="width:50px; text-align:center">
<f:facet name="header">E-mail</f:facet>
<h:outputText value="#{fiscal.email}" style="text-align:justify" />
</p:column>
<p:column style="width:25px; text-align:center">
<f:facet name="header">Telefone</f:facet>
<p:inputMask value="#{fiscal.telefone}" mask="(99) 9999-9999"
disabled="true" />
</p:column>
<p:column style="width:5px; text-align:center">
<f:facet name="header">Excluir</f:facet>
<h:commandLink action="#{acaoFiscalBean.excluiFiscal}">
<h:graphicImage value="/recursos/imagens/lixeira.png"
style="border:0;" />
<f:setPropertyActionListener
target="#{acaoFiscalBean.agenteFiscal}" value="#{fiscal}" />
</h:commandLink>
</p:column>
</p:dataTable>
</div>
</p:fieldset>
</div>
<div style="clear: both;"></div>
<div class="campo-grupo">
<h3>
<h:outputText value="Contribuinte " />
<p:inputMask id="cont" mask="99.999.999/9999-99"
title="Entre com o CNPJ ou CPF" size="30"
value="#{acaoFiscalBean.documento}">
<p:ajax listener="#{acaoFiscalBean.carregarDadosContribuinte}"
onevent="change" execute="true"
update="soc,ativ,serv,end,comp,bairro" />
</p:inputMask>
</h3>
</div>
<div style="clear: both;"></div>
<div class="campo-simples">
<p:fieldset id="dados" legend="Dados Contribuinte" toggleable="true">
<div class="campo-grupo">
<h:outputLabel value="Razão social" />
<p:inputText id="soc" size="60"
value="#{acaoFiscalBean.contribuinte.contribuinte}"
readonly="true" />
</div>
<div class="campo-grupo">
<h:outputLabel value="Atividade" />
<p:inputText id="ativ" size="60"
value="#{acaoFiscalBean.contribuinte.atividade}" readonly="true" />
</div>
<div style="clear: both;"></div>
<div class="campo-simples">
<h:outputLabel value="Serviço" />
<p:inputText id="serv" size="87"
value="#{acaoFiscalBean.contribuinte.servico}" readonly="true" />
</div>
<div class="campo-simples">
<h:outputLabel value="Endereço" />
<p:inputText id="end" size="87"
value="#{acaoFiscalBean.contribuinte.tipoLogradouro} #{acaoFiscalBean.contribuinte.logradouro}, nº #{acaoFiscalBean.contribuinte.numero}"
readonly="true" />
</div>
<div class="campo-grupo">
<h:outputLabel value="Complemento" />
<p:inputText id="comp" size="20"
value="#{acaoFiscalBean.contribuinte.complemento}"
readonly="true" />
</div>
<div class="campo-grupo">
<h:outputLabel value="Bairro" />
<p:inputText id="bairro" size="60"
value="#{acaoFiscalBean.contribuinte.tipoBairro} #{acaoFiscalBean.contribuinte.bairro}"
readonly="true" />
</div>
</p:fieldset>
</div>
<div class="campo-simples">
<p:fieldset id="contato" legend="Dados Contato" toggleable="true">
<div class="campo-grupo">
<h:outputLabel value="CPF / CNPJ" />
<p:inputMask id="cpfcontato" mask="999.999.999-99"
value="#{acaoFiscalBean.contato.cpf}" size="20" />
</div>
<div class="campo-grupo">
<h:outputLabel value="Nome" />
<p:inputText id="nomecontato"
value="#{acaoFiscalBean.contato.nome}" size="70" onkeyup="up(this)"/>
</div>
<div style="clear: both;"></div>
<div class="campo-grupo">
<h:outputLabel value="Telefone" />
<p:inputMask id="telefonecontato"
value="#{acaoFiscalBean.contato.telefone}" mask="(99) 9999-9999"
size="20" />
</div>
<div class="campo-grupo">
<h:outputLabel value="E-mail" />
<p:inputText id="emailcontato"
value="#{acaoFiscalBean.contato.email}" size="70" />
</div>
<div style="clear: both;"></div>
<div class="campo-simple">
<p:commandButton value="Incluir"
action="#{acaoFiscalBean.inserirContato}"
update="contatodados, contato" ajax="false" title="Incluir contato"/>
</div>
</p:fieldset>
</div>
<div class="campo-simples">
<p:dataTable id="contatodados" var="cont" emptyMessage=""
value="#{acaoFiscalBean.acaoFiscal.contatos}">
<p:column style="width:90px; text-align:left">
<f:facet name="header">Contato</f:facet>
<h:outputText value="#{cont.nome}" />
</p:column>
<p:column style="width:30px; text-align:center">
<f:facet name="header">CPF / CNPJ</f:facet>
<h:outputText value="#{cont.cpf}" />
</p:column>
<p:column style="width:50px; text-align:center">
<f:facet name="header">E-mail</f:facet>
<h:outputText value="#{cont.email}" />
</p:column>
<p:column style="width:25px; text-align:center">
<f:facet name="header">Telefone</f:facet>
<h:outputText value="#{cont.telefone}" />
</p:column>
<p:column style="width:10px; text-align:center">
<f:facet name="header">Excluir</f:facet>
<h:commandLink action="#{acaoFiscalBean.excluiContato}">
<h:graphicImage value="/recursos/imagens/lixeira.png"
style="border:0;" />
<f:setPropertyActionListener target="" value="#{cont}" />
</h:commandLink>
</p:column>
</p:dataTable>
</div>
<div class="campo-simples">
<p:fieldset id="dadoacao" legend="Dados Ação" toggleable="true">
<div class="campo-simples">
<p:fieldset id="perfisc" legend="Período a ser fiscalizado">
<div class="campo-grupo">
<h:outputText value="Inicio" />
<p:calendar
value="#{acaoFiscalBean.periodoFiscalizacao.datainicio}"
pattern="dd/MM/yyyy" requiredMessage="DATA OBRIGATÓRIO" />
</div>
<div class="campo-grupo">
<h:outputText value="Fim" />
<p:calendar
value="#{acaoFiscalBean.periodoFiscalizacao.datafim}"
pattern="dd/MM/yyyy" requiredMessage="DATA OBRIGATÓRIO" />
</div>
<div class="campo-grupo">
<p:commandButton value="Incluir período" action="#{acaoFiscalBean.inserirPeriodoFiscalizado}"
update="peri,perfisc" ajax="false" />
</div>
</p:fieldset>
<div style="clear: both;"></div>
<div class="campo-simples">
<p:dataTable id="peri" var="membro"
value="#{acaoFiscalBean.acaoFiscal.periodos}">
<p:column style="width:60px; text-align:center">
<f:facet name="header">Data Inicio</f:facet>
<h:outputText value="#{membro.datainicio}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column style="width:60px; text-align:center">
<f:facet name="header">Data Fim</f:facet>
<h:outputText value="#{membro.datafim}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column style="width:20px; text-align:center">
<f:facet name="header">Excluir</f:facet>
<h:commandLink
action="#{acaoFiscalBean.excluiPeriodoFiscalizado}"
title="Excluir periodo de fiscalização">
<h:graphicImage value="/recursos/imagens/CROSS16.BMP"
style="border:0;" />
<f:setPropertyActionListener target="" value="#{membro}" />
</h:commandLink>
</p:column>
</p:dataTable>
</div>
</div>
<div class="campo-simples">
<h:outputLabel value="Motivação" />
<p:selectOneMenu id="motivacao" style="width:500px" value="#{acaoFiscalBean.motivacao}"
converter="conversorMotivacao"
immediate="true">
<f:selectItem itemValue="" itemLabel="SELECIONE...."
noSelectionOption="true" />
<f:selectItems value="#{acaoFiscalBean.listaMotivacao}"
var="lista" itemValue="#{lista}"
itemLabel="#{lista.detalhamento}" />
</p:selectOneMenu>
</div>
<div class="campo-simples">
<h:outputLabel value="Histórico/Observação" />
<p:inputTextarea id="his"
value="#{acaoFiscalBean.acaoFiscal.historico}" onkeyup="up(this)"
style="width:547px;" title="Digite o histórico ou observação sobre a ação fiscal"/>
</div>
<div class="campo-simples">
<h:outputLabel value="Documento a serem apresentado" />
<p:inputTextarea id="doc"
value="#{acaoFiscalBean.acaoFiscal.documentosapresentados}"
style="width:547px;" title="Digite a documentação a ser apresentada pelo contribuinte" onkeyup="up(this)"/>
</div>
<div class="campo-grupo">
<h:outputLabel value="Data e hora do início da ação fiscal" />
</div>
<div class="campo-grupo">
<p:inputText readonly="true"
value="#{acaoFiscalBean.dataHora}" onkeyup="up(this)" />
</div>
<div class="campo-grupo">
<h:outputLabel value="Prazo" />
</div>
<div class="campo-grupo">
<p:calendar value="#{acaoFiscalBean.acaoFiscal.prazo}"
pattern="dd/MM/yyyy HH:mm" />
</div>
<div style="clear: both;"></div>
<div class="campo-grupo">
<h:outputLabel value="Quantidade de prorrogação" />
</div>
<div class="campo-grupo">
<p:inputText id="prorro" value="#{acaoFiscalBean.consultaAgenteFiscalProcesso.quantidade_prorrogacao}" size="3" readonly="true"/>
</div>
<div class="campo-grupo">
<p:commandButton value="Solicitar prorrogação"
action="#{acaoFiscalBean.solicitarProrrogacao}" ajax="false">
</p:commandButton>
</div>
<div class="campo-grupo">
<p:commandButton value="Ver justificativa"
onclick="justificativa.show()" />
<p:dialog header="Ver justificativa" widgetVar="justificativa"
resizable="true" width="420">
<c:if
test="#{!empty acaoFiscalBean.consultaAgenteFiscalProcesso.justificativa_prorrogacao}">
<div class="campo-simples">
<h:outputText value="Justificativas" />
</div>
<div class="campo-simples">
<p:inputTextarea style="width:390px;height:100px;"
readonly="true" autoResize="true"
value="#{acaoFiscalBean.consultaAgenteFiscalProcesso.justificativa_prorrogacao}"
onkeyup="up(this)" />
</div>
</c:if>
<c:if
test="#{empty acaoFiscalBean.consultaAgenteFiscalProcesso.justificativa_prorrogacao}">
<h:outputText value="Não há justificativas" />
</c:if>
</p:dialog>
</div>
</p:fieldset>
</div>
<div class="campo-simples">
<p:commandButton id="salvar" value="Salvar" action="#{acaoFiscalBean.salvar}"
update="msgSuccess" ajax="false" onclick="dlg.show()" title="Clique para salvar a ação fiscal"/>
</div>
</h:form>
</ui:define>
</ui:composition>
</html>
Erro gerado no console
15:27:12,665 GRAVE [javax.enterprise.resource.webcontainer.jsf.application] (http–127.0.0.1-8080-2) Error Rendering View[/fiscalizacao/acaofiscal.xhtml]: javax.el.ELException: /fiscalizacao/acaofiscal.xhtml @61,70 value="#{acaoFiscalBean.listaAgenteFiscais}": org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.gov.sp.indaiatuba.mammon.model.entity.AgenteFiscal