Senhores Boa tarde,
Estou com um plobema ao inserir um dado no banco de dados, seguinte:
Tenho a classe divida e pagamento, um divida pode haver vários pagamentos e muito pagamentos pertence a uma dívida, pois bem tenho uma pegina que existe um dataTable demonstrando as dívidas e quando eu clico na linha desejada aparece um <p:dialog> com as informações da divida e os campos para inserir o pagamento onde abaixo segue o código:
<p:dialog id="telapagamento" widgetVar="pagetela" header="Coloque os dados de pagamento">
<p:dataTable id="tablepagamento" value="#{pagamentoFaces.listofPagamentos}" var="pagamento" selection="#{pagamentoFaces.selectedPagamento}"
emptyMessage="Não existe pagamento cadastrado" rowKey="#{pagamento.id}" selectionMode="single">
<p:ajax event="rowSelect" update=":formmain:pnlpag"/>
<p:column headerText="ID">
#{pagamento.id}
</p:column>
<p:column headerText="Forma de Pagamento">
#{pagamento.formapagamento}
</p:column>
<p:column headerText="Data de Pagamento">
#{pagamento.datapagamento}
</p:column>
<p:column headerText="Valor">
#{pagamento.valor}
</p:column>
<p:column headerText="Dívida">
#{pagamento.divida}
</p:column>
<f:facet name="footer">
Panel de Pagamentos
</f:facet>
</p:dataTable>
<p:separator/>
<p:panelGrid columns="2" id="pnlpag">
<p:outputLabel for="venc" value="Vencimento: "/>
<h:outputText id="venc" value="#{dividaFaces.selectedDivida.vencimento}">
<f:convertDateTime pattern="dd/MM/yy"/>
</h:outputText>
<p:outputLabel for="despesa" value="Dívida: "/>
<p:inputText id="despesa" value="#{dividaFaces.selectedDivida.id}"/>
<p:outputLabel for="pagamentoID" value="Pagamento: "/>
<p:inputText id="pagamentoID" value="#{pagamentoFaces.selectedPagamento.id}"/>
<p:outputLabel for="datapagamento" value="Data do Pagamento: "/>
<p:calendar id="datapagamento" value="#{pagamentoFaces.selectedPagamento.datapagamento}"/>
<p:outputLabel for="valorpagamento" value="Valor do pagamento: "/>
<p:inputText id="valorpagamento" onkeypress="mascara(this, valor);" value="#{pagamentoFaces.selectedPagamento.valor}"/>
<p:outputLabel for="pgto" value="Forma de Pagamento:"/>
<p:selectOneMenu id="pgto" value="#{pagamentoFaces.selectedPagamento.formapagamento}">
<f:selectItem itemLabel="|| - Selecione - || "/>
<f:selectItem itemLabel="Cartão" itemValue="Cartao"/>
<f:selectItem itemLabel="Boleto" itemValue="Boleto"/>
<f:selectItem itemLabel="Espécie" itemValue="Especie"/>
<f:selectItem itemLabel="Cheque" itemValue="Cheque"/>
<f:selectItem itemLabel="Tranferência" itemValue="Transferencia"/>
</p:selectOneMenu>
<p:outputLabel for="dividaid" value="Divida ID:"/>
<p:inputText id="dividaid" value="#{pagamentoFaces.selectedPagamento.divida}"/>
<f:facet name="footer">
<center>
<p:commandButton value="Inserir" action="#{pagamentoFaces.newPay()}" update=":formmain:avisos" immediate="true"/>
<p:commandButton value="Gravar" action="#{pagamentoFaces.addingPay()}" update=":formmain:avisos :formmain:telapagamento"/>
</center>
</f:facet>
</p:panelGrid>
</p:dialog>
Que eu teria a opção que caso eu quisesse adicionar um novo pagamento mudava o valor do pagamentoID e ao apertar no botão gravar era para inserir um novo dado com as informações posta, porém ao gravar é dada a seguinte mensagem de erro:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:85)
at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:70)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:90)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:185)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
at br.com.finance.dao.GenericDao.savingPojo(GenericDao.java:32)
at br.com.finance.dao.PagamentoDAO.addPagamento(PagamentoDAO.java:28)
at br.com.finance.view.PagamentoFaces.addingPay(PagamentoFaces.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
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:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
E não sei o que pode ser, até cheguei a achar que seria o Converter, mas inserindo alguns println o método está sendo invocado e passa normal.
Alguém poderia me ajudar?
Agradeço desde já.