2014-10-09 118 views
1

我有一个名为ClBranch.java像下面类:如何获得注释名称属性?

@Entity 
    @Table(name = "PROVINCE") 
    public class PROVINCE implements Serializable { 
     @Id 
     @Column(name="PR_CODE", length = 50) 
     private String provinceCode 

     @Column(name="PR_NAME", length = 500) 
     private String provinceName 
    ...... 
    getter-setter. 
    } 


This is my code: 
    public static String getClassAnnotationValue(Class classType, Class annotationType, String attributeName) { 
      String value = null; 

      Annotation annotation = classType.getAnnotation(annotationType); 
      if (annotation != null) { 
       try { 
        value = (String) annotation.annotationType().getMethod(attributeName).invoke(annotation); 
       } catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 

      return value; 
     } 


String columnName = getClassAnnotationValue(PROVINCE .class, Column.class, "name");  

通过这种方式,我只得到的ColumnName为省。我无法获得ColumnName。我该怎么做?

+0

String columnName = getClassAnnotationValue(PROVINCE .class,Table.class,“name”); – 2014-10-09 10:44:14

回答

1

@Column注释是在字段上定义的,而不是在类上定义的。所以,你必须从私有字段查询注释值:

String columnName = getAnnotationValue(PROVINCE.class.getDeclaredField("provinceCode"), Column.class, "name"); 

为了能够通过Field对象,以你的方法,改变你的classType参数的类型从ClassAnnotatedElement。然后,您可以传递类,字段,参数或方法:

public static String getAnnotationValue(AnnotatedElement element, Class annotationType, String attributeName) { 
    ... 
}