Executar uma procedure com a qtd de objetos de um List

3 respostas
juloko666

Pessoal, tenho dois atributos de um objeto e desejo persisti-lo no Banco, como código abaixo ele persiste da primeira vez e da segunda qdo ele executa ele me retorna uma SQL Exception dizendo que a o registro no banco tem é chave unica e não pode ser duplicado, mas detalhe: Na lista não há elementos repetidos

for (NotaEmpenho obj : _ntaEmpenho) 
{ 
		csNtaEmpenho.setInt(1, _idContrato);
		csNtaEmpenho.setString(2, obj.getNotaDeEmpenho());
		csNtaEmpenho.setString(3, obj.getExercicioFiscal());
		csNtaEmpenho.execute();
		
}

O ‘csNtaEmpenho’ é um ‘CallableStatement’.

3 Respostas

rodrigo_gomes

Olá,

Se sua chave for o “_idContrato” ela tá se repetindo sim.
No seu objeto NotaEmpenho não tem nenhuma propriedade “idContrato”?

[]´s

juloko666

Vou explicar um pouco da regra do negocio:

O id é o Id de um contrato…

um contratato pode ter várias notas de empenho e tipo os Id’s dessas são gerados por uma procedure.

Será qe naum tem problema de usar o mesmo ‘CallableStatement’ para setar as propriedades e executar a procedure?

rodrigo_gomes

Humm…entendi.
Então, toda vez que vc executa sua procedure ela deveria gerar um id certo?
O problema pode estar nela tbm…

E quanto a usar o mesmo CallableStatement não sei se há problema. Faça um teste criando um para cada vez que for chamar.

[]´s

Criado 15 de fevereiro de 2007
Ultima resposta 15 de fev. de 2007
Respostas 3
Participantes 2