Pegar o Id chave primaria Hibernate

3 respostas
articof

Olá pessoal,

Alguém sabe como pegar a chave primaria de um registro que acabou de ser gravado, pois precisso desta chave para gravar numa proxima tabela. Exemplo simplificado:

public void armazena(Usuario  u){

this.daoFactory.beginTransaction();

this.daoFactory.getUsuarioDao().armazena(u);

this.daoFactory.commit();

}

Logo depois precisso pegar esta chave primaria e usa-la na gravação da próxima tabela:
public void armazena(Menu  m){

m.setIdUsuario(i.getId());  // ->> essa aqui é a chave que necessito !!

	this.daoFactory.beginTransaction();

this.daoFactory.getMenuDao().armazena(m);

this.daoFactory.commit();

}

Só imagino ter que fazer uma busca por nome ou algum outro atributo, mais quero evitar isto, imagino que ha uma forma de pegar esse Id.
Valeu !

3 Respostas

articof

Depois de procurar achei isto para retornar meu objeto com o Id. Não sei se ficou elegante, mais funcionou …

@SuppressWarnings("unchecked") public T adicionaRetornoId(T u){ this.session.save(u); return (T) this.session.merge(u); }

rodrigo_corinthians

Quando passar da linha this.session.save(u) teoricamente o Id já deveria vir setado no objeto…

Qual banco de dados e annotation vc tá usando no objeto??

articof

Rodrigo, não vem não, pois o objeto vem de um formulario via Vraptor e não tem o Id, ele é gerado automaticamente pelo hibernate com a anotação:

@Id
	@GeneratedValue
	private long id;
Criado 20 de março de 2008
Ultima resposta 21 de mar. de 2008
Respostas 3
Participantes 2