Crud primefaces + update

Galera, estou fazendo um crud com primefaces e estou com o seguinte problema:

ao tentar dar um update em um registro, apesar de fazer as alterações necessárias no formulário, ao clicar no botão salvar, o sistema insiste em pegar os dados anteriores a alteração do formulário. Já tentei de tudo, alguem pode me dar alguma luz?

segue abaixo os códigos:

BackingBean


package br.com.saturno.hyperium.service.impl.ctrc;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import br.com.saturno.hyperium.bd.DAOCidade;
import br.com.saturno.hyperium.bd.DAOEstado;
import br.com.saturno.hyperium.bd.DAOFonteReceita;
import br.com.saturno.hyperium.bd.DAOPortador;
import br.com.saturno.hyperium.bd.ctrc.DAOFilial;
import br.com.saturno.hyperium.bean.Cidade;
import br.com.saturno.hyperium.bean.Estado;
import br.com.saturno.hyperium.bean.FonteReceita;
import br.com.saturno.hyperium.bean.Portador;
import br.com.saturno.hyperium.bean.ctrc.Filial;
import br.com.saturno.hyperium.service.ctrc.FilialService;
import br.com.saturno.hyperium.view.ctrc.FilialView;

@Service("filialService")
public class FilialServiceImpl implements FilialService{

	@Override
	public void cadastrarFilial(FilialView view) {
		try {
			new DAOFilial().inserirFilial(view.getFilial());
		}catch(Exception ex) {
			ex.printStackTrace();
		}
	}

	@Override
	public void excluirFilial(FilialView view) {
		try {
			new DAOFilial().excluirFilial(view.getFilial());
		}catch(Exception ex) {
			ex.printStackTrace();
		}
		
	}

	@Override
	public void alterarFilial(FilialView view) {
		try {
			new DAOFilial().alterarFilial(view.getFilial());
		}catch(Exception ex) {
			ex.printStackTrace();
		}
		
	}

	@Override
	public List<Filial> getFiliais() {
		List<Filial> dados = new ArrayList<Filial>();
		
		try{ 
			dados =  new DAOFilial().getFiliais();
		}catch(Exception ex) {
			
		}
		return dados;
	}

	@Override
	public List<Cidade> getCidades() {
		try {
			return new DAOCidade().getCidades();
		}catch(Exception ex) {
			return new ArrayList<Cidade>();
		}
	}

	@Override
	public List<Estado> getEstados() {
		try {
			return new DAOEstado().getEstados();
		}catch(Exception ex) {
			ex.printStackTrace();
			return new ArrayList<Estado>();
		}
	}

	
	public Map<String,String> getEstadoCombo() {
		Map<String,String> estados = new HashMap();
		
		List<Estado> listEstados = this.getEstados();
		
		for(int i=0;i<listEstados.size();i++) {
			estados.put(listEstados.get(i).getDescricao(),listEstados.get(i).getCodigo().toString());
		}
				
		return estados;
	}
	
	public Map<String,String> getCidadeCombo() {
		Map<String,String> cidades = new HashMap();
		
		List<Cidade> listCidades = this.getCidades();
		
		for(int i=0;i<listCidades.size();i++) {
			cidades.put(listCidades.get(i).getDescricao(),listCidades.get(i).getCodigo().toString());
		}
		
		return cidades;
	}

	@Override
	public Map<String, String> getFonteReceitaCombo() {
		Map<String,String> fontes = new HashMap();
		
		List<FonteReceita> listFontes = this.getFonteReceita();
		
		for(int i=0;i<listFontes.size();i++) {
			fontes.put(listFontes.get(i).getDescricao(),listFontes.get(i).getCodigo().toString());
		}
		
		return fontes;
	}

	@Override
	public List<FonteReceita> getFonteReceita() {
		try {
			return new DAOFonteReceita().getFonteReceitas();
		}catch(Exception ex) {
			ex.printStackTrace();
			return new ArrayList<FonteReceita>();
		}
	}

	@Override
	public List<Portador> getPortadores() {
		try {
			return new DAOPortador().getPortadores();
		}catch(Exception ex) {
			ex.printStackTrace();
			return new ArrayList<Portador>();
		}
	}

	@Override
	public Map<String, String> getPortadoresCombo() {
		Map<String,String> fontes = new HashMap();
		
		List<Portador> listPortadores = this.getPortadores();
		
		for(int i=0;i<listPortadores.size();i++) {
			fontes.put(listPortadores.get(i).getDescricao(),listPortadores.get(i).getCodigo().toString());
		}
		
		return fontes;
	}
	
	
}

Tela principal:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:c="http://java.sun.com/jsp/jstl/core"
	xmlns:t="http://myfaces.apache.org/tomahawk"
	xmlns:p="http://primefaces.prime.com.tr/ui"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:sec="http://www.springframework.org/security/tags">

<ui:composition template="/pages/template/template_padrao.xhtml">
	<ui:define name="head">
		<style type="text/css">
.ui-datatable .ui-datatable-header {
	text-align: right;
}

.ui-button-icon-only .ui-icon {
	left: 50%;
	margin-left: -8px;
}

.ui-datatable table {
	border-collapse: collapse;
	width: 100%;
	font-size: 80% !important;
}
</style>
	</ui:define>

	<ui:define name="cabecalho">
		<ui:include src="/pages/admin/ctrc/cabecalho.xhtml"></ui:include>
	</ui:define>

	<ui:define name="conteudo">

		<h:form id="form">
			<p:messages id="msgs" showDetail="true"/>  
			
			<p:dataTable var="filial" value="#{filialView.filiais}" id="listagem"
				selection="#{filialView.filial}" selectionMode="single" onselectComplete="filialDialog.show()" update="form:display"
				paginator="true" rows="10"
				paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
				rowsPerPageTemplate="5,10,15">

				<p:column filterBy="#{filial.codigo}" headerText="C&oacute;digo"
					style="width: 10%;" filterMatchMode="contains">
					<center>
						<font face="verdana" size="2"> <h:outputText
								value="#{filial.codigo}" /> </font>
					</center>
				</p:column>


				<p:column filterBy="#{filial.descricao}" style="width: 60%;"
					headerText="Descri&ccedil;&atilde;o" filterMatchMode="contains">
					<font face="verdana" size="2"> <h:outputText
							value="#{filial.descricao}" /> </font>
				</p:column>

				<p:column filterBy="#{filial.prazo}" headerText="Prazo"
					style="width: 10%;" filterMatchMode="contains">
					<center>
						<font face="verdana" size="2"> <h:outputText
								value="#{filial.prazo}" /> </font>
					</center>
				</p:column>
				
				
				<f:facet name="footer">
					<p align="left">

						<p:commandButton value="Novo" image="ui-icon ui-icon-disk"
							oncomplete="filialCad.show()" />

					</p>
				</f:facet>

			</p:dataTable>

			<p:dialog header="Manuten&ccedil;&atilde;o Cadastral de Filiais"
				widgetVar="filialDialog" resizable="false" width="350"
				showEffect="clip" hideEffect="fold" modal="true">

				<h:panelGrid id="display" columns="1" cellpadding="4">
				
					<h:outputLabel for="descricao" value="Descri&ccedil;&atilde;o*" />
					<p:inputText id="descricao" value="#{filialView.filial.descricao}"
						required="true" />
					
					<h:outputLabel for="codtranspor" value="Cod. TRANSPOR*" />
					<p:inputText id="codtranspor"
						value="#{filialView.filial.codTranspor}" />

					<h:outputLabel for="prazo" value="Prazo" />
					<p:inputText id="prazo" value="#{filialView.filial.prazo}" />

					<h:outputLabel for="estado" value="Estado" />
					<h:selectOneMenu id="estado" value="#{filialView.estado.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="" />
						<f:selectItems value="#{filialView.estados}" var="estado"
							itemLabel="#{estado.descricao}" itemValue="#{estado.codigo}" />
					</h:selectOneMenu>
					<p:message for="estado" />

					<h:outputLabel for="cidade" value="Cidade" />
					<h:selectOneMenu id="cidade" value="#{filialView.cidade.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="" />
						<f:selectItems value="#{filialView.cidades}" var="cidade"
							itemLabel="#{cidade.descricao}" itemValue="#{cidade.codigo}" />
					</h:selectOneMenu>
					<p:message for="cidade" />

					<h:outputLabel for="portador" value="Portador" />
					<h:selectOneMenu id="portador"
						value="#{filialView.portador.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="" />
						<f:selectItems value="#{filialView.portadores}" var="portador"
							itemLabel="#{portador.descricao}" itemValue="#{portador.codigo}" />
					</h:selectOneMenu>
					<p:message for="portador" />


					<h:outputLabel for="fonte_receita" value="Fonte de Receita" />
					<h:selectOneMenu id="fonte_receita"
						value="#{filialView.fonteReceita.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="" />
						<f:selectItems value="#{filialView.fontes}" var="fonte"
							itemLabel="#{fonte.descricao}" itemValue="#{fonte.codigo}" />
					</h:selectOneMenu>
					<p:message for="fonte_receita" />

				</h:panelGrid>

				<p:commandButton value="Alterar" update="display form listagem msgs"
					actionListener="#{filialView.alterarFilial}" immediate="true" 
					oncomplete="filialDialog.hide();"
					title="Clique para salvar as informa&ccedil;&otilde;es" >
					<f:setPropertyActionListener value="#{filial}" target="#{filialView.filial}" />
					</p:commandButton>	
				
				<p:commandButton value="Excluir" 				
					oncomplete="remover.show();"
					title="Clique para excluir as informa&ccedil;&otilde;es" />					
					
					
				<p:commandButton value="Cancelar" immediate="true" onclick="filialDialog.hide()" />
			</p:dialog>
		</h:form>

		<p:dialog header="Manuten&ccedil;&atilde;o Cadastral de Filiais"
			widgetVar="filialCad" resizable="false" width="350" showEffect="clip"
			hideEffect="fold" modal="true">
			<h:form id="formcad">
				<h:panelGrid id="displaycad" columns="1" cellpadding="4">

					<h:outputLabel for="descricaocad" value="Descri&ccedil;&atilde;o*" />
					<p:inputText id="descricaocad"
						value="#{filialView.filial.descricao}" required="true" />

					<h:outputLabel for="codtransporcad" value="Cod. TRANSPOR*" />
					<p:inputText id="codtransporcad"
						value="#{filialView.filial.codTranspor}" />

					<h:outputLabel for="prazocad" value="Prazo" />
					<p:inputText id="prazocad" value="#{filialView.filial.prazo}" />

					<h:outputLabel for="estadocad" value="Estado" />
					<h:selectOneMenu id="estadocad" value="#{filialView.estado.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="0" />
						<f:selectItems value="#{filialView.estados}" var="estado"
							itemLabel="#{estado.descricao}" itemValue="#{estado.codigo}" />
					</h:selectOneMenu>
					<p:message for="estadocad" />

					<h:outputLabel for="cidadecad" value="Cidade" />
					<h:selectOneMenu id="cidadecad" value="#{filialView.cidade.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="0" />
						<f:selectItems value="#{filialView.cidades}" var="cidade"
							itemLabel="#{cidade.descricao}" itemValue="#{cidade.codigo}" />
					</h:selectOneMenu>
					<p:message for="cidadecad" />

					<h:outputLabel for="portadorcad" value="Portador" />
					<h:selectOneMenu id="portadorcad"
						value="#{filialView.portador.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="0" />
						<f:selectItems value="#{filialView.portadores}" var="portador"
							itemLabel="#{portador.descricao}" itemValue="#{portador.codigo}" />
					</h:selectOneMenu>
					<p:message for="portadorcad" />


					<h:outputLabel for="fonte_receitacad" value="Fonte de Receita" />
					<h:selectOneMenu id="fonte_receitacad"
						value="#{filialView.fonteReceita.codigo}">
						<f:selectItem itemLabel="Selecione..." itemValue="0" />
						<f:selectItems value="#{filialView.fontes}" var="fonte"
							itemLabel="#{fonte.descricao}" itemValue="#{fonte.codigo}" />
					</h:selectOneMenu>
					<p:message for="fonte_receitacad" />


				</h:panelGrid>

				<p:commandButton value="Salvar" id="btn_cad"
					action="#{filialView.cadastrarFilial}" update="form listagem msgs"
					oncomplete="filialCad.hide();"
					title="Clique para salvar as informa&ccedil;&otilde;es" />
					
					
				<p:commandButton value="Limpar" action="#{filialView.limpar}" update="displaycad"/>
				
				
			</h:form>
		</p:dialog>
		
		<p:dialog widgetVar="remover" header="Remover Filial" width="400" modal="true">
        <h:form id="formRemover">
            <h:outputText value="Confirma ?" />
            <h:panelGrid columns="2">
                <p:commandButton value="Sim" action="#{filialView.excluirFilial}" update="form listagem msgs" oncomplete="filialDialog.hide() remover.hide()" />
                <p:commandButton value="N&atilde;o" onclick="remover.hide()" />
            </h:panelGrid>
        </h:form>    
    </p:dialog>

	</ui:define>

</ui:composition>
</html>

Alguma luz?

niguem?

Amigo sou novo no mundo Java/JSF!
Acredito que ao clicar em salvar você não tenha feito a sincronização dos dados do formulário com o objeto em questão que será salvo no banco!
Verifique antes de salvar se os dados do objeto já são os do front!

Ai é que tá! Eu carrego os dados que estão no BD em um formulário ao clicar no grid e altero. Ao clicar em alterar ele mantem os dados anteriores. Desconfio que seja pq o datatable e o dialog estejam no mesmo form, mas não consegui fazer de outro jeito.

:frowning: