Amigos,
Tenho um EJB que possui um método que grava uma lista.
Nesse método tenho um for para percorrer os item.
Ao persistir o item, ele não esta disponível no bean ao executar alguma query no banco pelo createNativeQuery.
Por conta disso, estou enviando um item por vez ao BEAN, e fica mais lento, queria mandar uma lista.
Como fazer com que o createNativeQuery utilize a transação corrente? ou seja, qq comando no banco seja lido na transação corrente?
Não tenho nem ideia de onde configurar isso. Qualquer luz será bem vinda.
Abaixo um exemplo.
EntityManagerFactory emf = Persistence.createEntityManagerFactory(nomeDS);
EntityManager em = emf.createEntityManager();
for (int i = 0; i < itens.size(); i++) {
Item item = itens.get(i);
if ( item.getNumeroPedido() == null) {
itemMesa.setNumeroPedido( numeroPedido.intValue() );
}
em.persist(itemMesa);
// Pegando o proximo ID -- ele nao computou o ultimo item gravado.
Query query = em.createNativeQuery("select casst( max(a.NUMERO_PEDIDO) as bigint) from ITENS ");
System.out.println( "Ultimo pedido ... " + (BigInteger)query.getSingleResult() );
}