Tenho duas aplicações aqui acessando um mesmo banco em oracle, uma delas acessa via jdbc e outra via hibernate. Porém, reparei que os registros inseridos pelo jdbc possuiam id menor que os do hibernate, algo em torno de id 50 para jdbc e 5000 para hibernate. Fui olhar a sequence e o jdbc esta usando certinho, então é o hibernate que não esta pegando o valor da sequence, percebi que ele esta acrescentando o id de 50 em 50 e pelo que olhei a configuração dos meus entitys, está certo, inclusive mostrando o sql gerado no console do jboss aparece o select nextval que ele faz na sequencia… fiz um teste em outra aplicação que acessa postgree para e que o entity está configurado da mesma forma e ai o hiberante fez certo (pega o valor da sequence).
alguem sabe se existe algum detalhe a mais para configurar essas sequencias para o oracle?! ou de onde o hibernate esta tirando esses valores ja que aparentemente não é de sequencia nenhuma?!
Não deu, ele gerou um SQLException pq gerou valor null para a chave:
Caused by: java.sql.SQLException: ORA-01400: não é possível inserir NULL em ("VFNLUIZ"."AUDITORIA"."CD_AUDITORIA")
O engraçado é que com SEQUENCE, ele gera esse SQL:
Hibernate: select SEQMOB_AUDITORIA.nextval from dual
Hibernate: insert into AUDITORIA (CD_USUARIO, DT_DATAHORA, DS_EVENTO, DS_ACAO, CD_AUDITORIA) values (?, ?, ?, ?, ?)
ou seja, faz o select na sequence, atualiza ela, mas não usa o valor, terminei ontem o dia com ele gerando chave ali pelos 5000+ e agora ele tah inserindo com 29000+…
Achei… ow falta de ler a documentação ehhehe o problema ocorria porque eu usava sequence da base sem setar o allocationSize do @SequenceGenerator, que por padrão é 50
[quote=“luBS”]Achei… ow falta de ler a documentação ehhehe o problema ocorria porque eu usava sequence da base sem setar o allocationSize do @SequenceGenerator, que por padrão é 50