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!