Pegar campos @id do hibernate atraves do class.getAnnotations()

4 respostas
L

Bom Dia a todos.

Eu tenho esta entidade no hibernate usando Annotation.

@Entity
@SequenceGenerator(name = "seq_profissoes", sequenceName = "seq_profissoes", allocationSize = 1, initialValue = 1)
@Table(name = "profissoes", schema = "public")
@org.hibernate.annotations.Entity(dynamicUpdate = true)
public class Profissao {

	@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="seq_profissoes")
	@Column(name = "cod_profissao")
	private int CodProfissao;
	public void setCod_Profissao(int codProfissao) {
		this.CodProfissao = codProfissao;
	}
	public int getCod_Profissao() {
		return CodProfissao;
	}
	
	@Column(name = "desc_profissao")
	private String DescProfissao;
	public void setDesc_Profissao(String descProfissao) {
		this.DescProfissao = descProfissao;
	}
	public String getDesc_Profissao() {
		return DescProfissao;
	}
}

Atraves do codigo abaixo eu pego a tabela que a entidade esta acessando.

Annotation ano = Profissao.class.getAnnotation(Table.class);
Table ta = (Table)ano;
System.out.println(ta.name());

Eu não to conseguindo pegar a(s) colunas que são Primary Key. Alguem teria alguma ideia?

4 Respostas

P

Vc tem no proprio hibernate classes que exibem os “metadados” e ai vc tem todas as informaçoes que o hibernate gerencia.

L

Na realidade eu gostaria de pegar as informações antes mesmo de criar uma Session. Penso eu que o hibernate vai fazer algum tipo de acesso aos metadados do banco e eu gostaria de evitar esta conexão.

Alguem tem uma ideia de como pegar a coluna que esta setada como @id?? isso ja me ajuda.

R

Via Reflection:

for (Field field : clazz.getDeclaredFields()) {  
             if ((field.getAnnotation(Id.class)) != null) {
L

OK, funcionando e Totalmente Dinamico.

Muito Obrigado, eu não tinha sacado a checagem do posuir a anotação pelo field.

Criado 27 de fevereiro de 2011
Ultima resposta 28 de fev. de 2011
Respostas 4
Participantes 3