Estou usando EJB para gerenciar transações com o banco e a API de persistência é JPA.
E estou fazendo a inserção de uma entidade dentro de um “for”, dentro desse for eu verifico se o registro pode ser gerado e persisto no banco. Entretanto, percebi que se forem gerados 20000 registros de alguma entidade o EJB só dá commit após inserir todos os 20000 registros e isso está causando rollback da transação.
Então eu gostaria de saber se há como forçar que o commit ocorra a cada iteração do for ou se há outra maneira de resolver isso?
Manda o código para a gente guj1! Mas dá sim, você pode pedir pro EJB injetar a transaction para você e você ser responsável por fazer isso manualmente.
Meu problema era o seguinte: eu estava usando um EJB Stateless, ou seja, ele não guardava o estado do objeto de persistência por isso lançava uma excessão do tipo TransactionException e causava rollback, então passei a usar o Stateful e tudo correu bem.