Pelo erro, vc está inserindo registros em lote. Você está usando sequence para obter a PK?
V
Vagner_jsf
Isso mesmo!
Lucas_Camara
Manda ae sua classe mapeada que vc está inserindo pra gente ver.
V
Vagner_jsf
Lucas, boa noite!
Segue classes!
Desde já, Obrigado!
@Service(value="fatDespesaLancamentoServico")@TransactionalpublicclassFatDespesaLancamentoServicoImpimplementsFatDespesaLancamentoServico{privatestaticfinallongserialVersionUID=0L;@PersistenceContextprivateEntityManagerentityManager;@Overridepublicvoidsalvar(FatDespesaLancamentobanco){entityManager.merge(banco);}@SuppressWarnings("unchecked")@OverridepublicList<FatDespesaLancamento>listarTodos(){returnentityManager.createQuery("from fat_despesa_lancamento").getResultList();}@SuppressWarnings("unchecked")@OverridepublicList<FatDespesaLancamento>listarTodosAtivos(){returnentityManager.createQuery("from fat_despesa_lancamento where status = '1' ").getResultList();}@SuppressWarnings("unchecked")@OverridepublicList<FatDespesaLancamento>listarTodosPorProfissional(Integerid){try{returnentityManager.createQuery("from fat_despesa_lancamento where id_profissional = :id ").setParameter("id",id).getResultList();}catch(NoResultExceptione){returnnull;}}@Overridepublicvoidexcluir(FatDespesaLancamentofatDespesaLancamento){fatDespesaLancamento=entityManager.merge(fatDespesaLancamento);entityManager.remove(fatDespesaLancamento);}@Overridepublicvoiddeletar(FatDespesaLancamentofatDespesaLancamento){fatDespesaLancamento.setDeletado("1");entityManager.merge(fatDespesaLancamento);}@OverridepublicvoidgravarDespesaPreFatura(){Stringquery="insert into fat_despesa_vinculo (id, cancelado, status, cliente, caso, profissional, valor)"+"select id, '2', status, cliente, caso, profissional, valor from fat_despesa_lancamento where id >= :id ";System.out.println(query);Queryq=entityManager.createQuery(query).setParameter("id",Long.valueOf(1));q.executeUpdate();}}
Uma dúvida: O ID da classe está marcada como SEQUENCE, mas não vi no código onde a sequence está definida. Qual banco está usando?
V
Vagner_jsf
Boa tarde Lucas!
MySql!
Uma outra duvida:
Acho que consegui resolver alterando diretamente no banco para Auto Incremento, minha duvida é se isso prejudica a performance?
Obrigado!
Lucas_Camara
Pelo que conheço, fazer batch insert com auto incremento não eh uma boa combinação. O mais correto é utilizar sequence (ainda mais que há o recurso de cache de sequence)