Action e bean para atualizar informacoes de banco

pessoal,

tenho um bean:

VeiculoFrota.java


...

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="codigo_centro_resultado")
public CentroResultadoCliente getCentroResultadoCliente()
{
	return centroResultadoCliente;
}

public void setCentroResultadoCliente(CentroResultadoCliente centroResultadoCliente) 
{
	this.centroResultadoCliente = centroResultadoCliente;
}

...

uma classe action com o metodo abaixo:


	private void alteraLimiteValorReferencia(ActionForm form, HttpServletRequest request, List<VeiculoFrota> veiculosFrota, Cliente cliente) throws BatchUpdateException, BusinessException
	{
		DynaActionForm dynaForm = (DynaActionForm) form;
		List<ControleLiberacaoVeiculo> controlesLiberacaoVeiculo = new ArrayList<ControleLiberacaoVeiculo>();
		String tipoLancamento = "";
		Double saldoCentro = 0d;
		Double saldoCentroAtual = veiculosFrota.get(0).getCentroResultadoCliente().getSaldoDisponivel();
		Double limite = 0d;
		Double saldo = 0d;
		Double novoLimite = 0d;
		Double valorEfetivado = 0d;
		Long formaAlteracao = (Long)dynaForm.get("formaAlteracao");
		Double valorReferencia = (Double)dynaForm.get("valorReferencia");
		Long periodoAlteracao = (Long)dynaForm.get("periodoAlteracao");
		int conta=0;
		
		for(VeiculoFrota veiculoFrota : veiculosFrota)
		{
			if(veiculoFrota.getCentroResultadoCliente() != null && veiculoFrota.getCentroResultadoCliente().getSaldoDisponivel() != null)
			{
				saldoCentro = veiculoFrota.getCentroResultadoCliente().getSaldoDisponivel();
			}

	
			if(saldoCentro < 0) 
			{
				throw new BusinessException("O Saldo do centro de resultado " + veiculoFrota.getCentroResultadoCliente().getDescricao() + " não suporta a alteração de limite para os veículos.");
			}
			
			saldoCentro += valorEfetivado;
		
			if(periodoAlteracao == 1 || periodoAlteracao == 3) 
			{
				veiculoFrota.getCentroResultadoCliente().setSaldoDisponivel(saldoCentro);
				
			}
		}
		this.updateLimiteSaldo(request, veiculosFrota, controlesLiberacaoVeiculo);
	}

todas as vezes que atualizo o saldo disponivel no ultimo if, essa informacao nao esta sendo atualizada no banco, e assim,
na segunda iteracao do laco ao inves de pegar o valor do saldo disponivel atualizado, ta sempre pegando o valor que ja
estava no banco.

situacao exemplo abaixo em que ha 2 centros de resultado cliente e cada um deles pode conter zero ou mais veiculoFrota.
se eu passar apenas um centro de resultado entao funciona normalmente.
se eu passar mais de um centro de resultado entao o problema aparece, ou seja, o programa, para um dado centro de resultado
pega apenas o saldo do ultimo veiculoFrota do banco, e nao soma os saldos de todos registros do saldo centro como desejado.

Alguem sabe o motivo ?