Executar uma procedure com a qtd de objetos de um List

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’.

Tudo bem?
Mas o erro ocorre de que forma?
Na segunda iteração do bloco for ou na segunda vez que o programa é executado?
Como são gerados os ids dos objetos?[quote]

for (NotaEmpenho obj : _ntaEmpenho)
{
csNtaEmpenho.setInt(1, _idContrato); // Esse campo não deveria ser lido de obj?
csNtaEmpenho.setString(2, obj.getNotaDeEmpenho());
csNtaEmpenho.setString(3, obj.getExercicioFiscal());
csNtaEmpenho.execute();

}

[/quote]

Tente criar seu CallableStatement a cada interação. Isto pode ajudar.

:okok: