Como obter a PK de um objeto desconhecido - Hibernate

4 respostas
T

Estou escrevendo um código genérico onde eu não sei qual propriedade
é a PK e eu gostaria de descobrir. Sei que posso fazer isso via Reflection, mas
algum tempo atrás creio que vi um código utilizando uma classe utilitária do
Hibernate que retorna o nome da propriedade e/ou o valor da PK passando
como parâmetro a Classe de qual se deseja saber a PK, baseado no mapeamento!
Mas infelizmente não me lembro onde foi :cry:

Alguem ja viu algo assim ?

Obrigado

4 Respostas

F

Se você estiver utilizando anotações uma forma é procurar o método que possui a anotação @Id.

Field[] campos = objeto.class.getDeclaredFields(); // Para cada campo for(Field campo: campos){ // Existe anotação de Id if (campo.isAnnotationPresent(Id.class)){ //pegar valor aqui } }

T

fre_d

Então conforme eu postei anteriormente recuperar via reflection eu sei!
Mas me lembro de ter visto em algum lugar uma classe utilitária do Hibernate
que retorna isso baseado na Configuration da SessionFactory mas não lembro
onde vi ou o nome da classe =/

Obrigado de qualquer forma

F

Da uma olhada na classe Configuration, com o nome da classe do objeto persistente você pode obter a PersistenceClass do hibernate.

PersistentClass pc = Configuration.getClassMapping(nomeDaClasseDoObjetoPersistence) ;
KeyValue kv = pc.getIdentifier() ; //Não sei se é esse método

T

fred_d, estou olhando a API ainda, mas é algo nesse sentido
que estou procurando mesmo :slight_smile:

Valeu

Criado 17 de outubro de 2007
Ultima resposta 18 de out. de 2007
Respostas 4
Participantes 2