Ler anotação JPA [RESOLVIDO]

3 respostas
brazhawk

Estou começando a estudar Hibernate/JPA, e gostaria da ajuda dos colegas aqui do GUJ.

Quando eu mapeio os meus campos, como no trecho abaixo:

@Entity
@Table(name="USUARIOS")
public class UsuarioBean {

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="usu_id")
	private int id;
	
	@Column(name="usu_login", nullable=false, unique=true)
	private String login;
	
	@Column(name="usu_senha", nullable=false)
	private String senha;

Eu gostaria de em uma outra classe, ler o que foi setado no atributo name da anotação @Column. Assim, saber que os vlaores são "usu_id" para o id, "usu_login" para o login, e "usu_senha" para senha. Como isso seria feito? Eu consegui ler apenas atributos de anotações que eu criei enquanto estava estudando... mas estas do JPA eu não consegui ler de jeito nenhum...
Como é que o Hibernate sabe na hora de deletar um registro que o campo id na tabela USUARIOS equivale a "usu_id"?

3 Respostas

jamirdeajr

Brazhawk,

Segue um exemplo de como eu faço:

leAnotacoes(UsuarioBean.class);
		
	public void leAnotacoes(Class<?> classe) {
		Field[] fields = classe.getDeclaredFields();
		for (Field field : fields) {
			Annotation[] annotations = field.getDeclaredAnnotations();
			for (Annotation annotation : annotations) {
				// Aqui pode ser qualquer das classes de anotações JPA
				if (annotation instanceof javax.persistence.Column) {
					javax.persistence.Column column = (javax.persistence.Column) annotation;
					
					System.out.println(column.name());  // Cada atributo tem um método...
				}
			}
		}
	}

Boa sorte!

Hebert_Coelho

Só tenha em mente que se alguém alterar o nome do campo no DB e sobrescrever em um arquivo xml, sua annotation estará defasada. [=

brazhawk

Era isso mesmo que eu estava querendo! Muito obrigado pela sua ajuda jamirdeajr!
Alterando o tópico para Resolvido…

Criado 15 de fevereiro de 2012
Ultima resposta 15 de fev. de 2012
Respostas 3
Participantes 3