2012-10-18 1 views
0

a problem I had the other day을 기반으로 다른 사용자를 위해 질문을 게시하고 답변하는 것입니다. 바라기를 이것은 누군가에게 약간의 시간을 절약합니다. JPA의 EntityManager에 내장되어 있지 않은 것에 조금 놀랐습니다.엔터티에 NamedQuery가 있는지 확인하는 방법

엔티티에 특정 이름의 NamedQuery 주석이 있는지 어떻게 확인할 수 있습니까?

실행하기 전에 엔티티에 특정 @NamedQuery이 있는지 확인해야합니다.

답변

1

주석이 중첩되면 주석을 가져와 주석을 가져올 수 있습니다. @NamedQueries의 경우 .value()입니다.

public boolean hasNamedQuery(Class<?> clazz, String nameOfQuery) { 
    boolean foundQueryByName = false; 
    NamedQueries namedQueries = clazz.getAnnotation(NamedQueries.class); 
    if (namedQueries != null && namedQueries.value() != null) { 
     NamedQuery[] values = namedQueries.value(); 
     for (int i = 0; i < values.length && !foundQueryByName; i++) { 
      foundQueryByName |= (nameOfQuery.equals(values[i].name())); 
     } 
    } 
    return foundQueryByName; 
}