JPA/Hibernate - obter id antes da persistência do pojo
3 respostas
L
lucianomx
É claro que não é usual, mas infelizmente existem razões para isto ser assim, pois os dados a serem salvos só podem ser produzidos após a existência do ID (chave).
Há alguns anos com o Hibernate resolvemos isto criando um DAO gerador de IDs, e nele infelizmente usávamos queries nativas como “select seq.nextval from dual” (para Oracle).
Enfim, que tipo de soluções vocês já criaram, ou sugerem para este tipo de problema. Odiaria ter novamente queries nativas e/ou ter que consultar uma sequence manualmente.
javax.ejb.EJBTransactionRolledbackException: java.lang.IllegalStateException: Illegal to call this method from injected, managed EntityManager
Obrigado.
seufagner
É claro que não é usual, mas infelizmente existem razões para isto ser assim, pois os dados a serem salvos só podem ser produzidos após a existência do ID (chave).
Cara, se você precisa da próxima PK obtida a partir de uma sequence, você persiste o POJO, utiliza este Id gerado. Caso aconteça alguma exceção você dá um rollback (isto é gerenciado automagicamente, mas você pode pode usar JTA na unha)
Para obter o nextval, configure uma sequence para o seu Id: