Jpa

Gostaria de saber se é possivel recuperar um objeto de logo após a inserção para poder visualizar o codigo gerado por trigger dele.
É assim, mando inserir o registro no banco blz… mas nao seto o codigo pq a trigger faz isso… mas ao mostrar os dados do registro na tela o campo codigo fica como null.
Se alguem puder me ajudar. Desde já agradeço.
Valeu, t+

opa.

pq vc está usando trigger para gerar o id?
o JPA tem generator para isso, compativeis com varios banco de dados…

normalmente, um simples @GenerdtedValue no seu Id ja basta. mas as vezes precisa ser mais detalhista e aí tem que especificar @SequenceGenerator e outros…

abraços

dá sim! use o metodo:

em.refresh( <T>  entity );

Nao funcionou nem com um e nem com outro :P.
Assim, estou usando o Firebird. Dai da uns erros de tabela não encontra (SEQUENCE) ou quando escolho estrategia
de sequenciais diz q o banco não suporta sequenciais nativos.

E usando o refresh ele persite o objeto blz… o dado fica gravado com o sequencial gerado mas ao dar esse refreah
da um erro dizendo q eu codigo tah nulo.

Mto complicado!!!
veja meu trecho de codigo, posso estar fazendo algo errado

método que insere

public void inserir(T obj) throws PersistenciaDAOException {
        EntityTransaction tr = em.getTransaction();
        tr.begin();
        try{
            em.persist(obj);
            em.flush();
            em.refresh(obj);
            tr.commit();            
        } catch (Exception ex){
            if ( tr.isActive() )
                tr.rollback();
            throw new PersistenciaDAOException(ex);
        }
    }

parte que faz o teste

try{
            
            Pizza pizza = new Pizza();
            pizza.setDescricao("Pizza 1");
            pizza.setIngredientes("ioahsidoasodijaosda");
            pizza.setPreco(new BigDecimal(22.3d));
            
            PizzaDAO dao = new PizzaDAO();
            dao.setConexao(Conexao.getConexao());
            dao.inserir(pizza);
            
            System.out.println("Pizza: " + pizza);
            
        } catch (Exception  ex){
            ex.printStackTrace();
        }        

Valeu!