Pegar o Id chave primaria Hibernate

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 !

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); }

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??

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:

          [code]  @Id
@GeneratedValue
private long id;[/code]