Reflexão e Anotações (java.lang.reflect e JPA)

2 respostas
cezarsignori

Quando tenho uma classe qualquer e utilizo os métodos Class.getDeclaredFields() ou Class.getDeclaredMethods(), todas as respectivas informações me são retornadas, no entanto, caso eu aplique os mesmos métodos sobre um Entity Bean, apenas me é retornado uma propriedade ou método, independentemente de visibilidade. Por exemplo em um entity bean, com as annotations nas propriedades e os seguintes métodos:

public String getAlgo();
public String getOutroAlgo();
public String getOutroAlgo1();
public String getOutroAlgo2();

Apenas getOutroAlgo1 é retornado no vetor de Class.getDeclaredMethods().

Alguém tem alguma idéia?

2 Respostas

acopiara

Algum desses metódos está em uma superclasse?
Se tiver membros na superclasse, use o getFields() e getMethods().
Mais Detalhes:
http://java.sun.com/docs/books/tutorial/reflect/class/classMembers.html

cezarsignori

Não funciona, foi a primeira coisa que testei.

Obtive sucesso fazendo o seguinte:

AnnotatedElement[] annotatedElements = classe.getDeclaredMethods();
              for (AnnotatedElement ane : annotatedElements){
                  Method m = (Method)ane;                  
                  System.out.println("Método..: " + m.getName());
              }
Criado 14 de dezembro de 2007
Ultima resposta 14 de dez. de 2007
Respostas 2
Participantes 2