Сравнение аннотаций JPA

#java #jpa #annotations

#java #jpa #аннотации

Вопрос:

Мне нужно проверить, есть ли у объекта какие-то конкретные аннотации (@ElementCollection и @JoinColumn)

 for(Annotation annotation : field.getAnnotations())
{
if (annotation.equals("@ElementCollection") || annotation.equals("@JoinColumn"))
     //do something
}
}
 

Но как я могу проверить, есть ли @JoinColumn, если это что-то вроде этого? (a @JoinColumn «внутри» a @CollectionTable)

 @ElementCollection
@CollectionTable(name = "ALARM_PLAN_IDS", joinColumns = {
        @JoinColumn(name = "ALARM_ID", referencedColumnName = "INST_ID"),
        @JoinColumn(name = "ALARM_ID_AK", referencedColumnName = "INST_ID_AK") })
protected Set<InstanceId> allPlanIdsInExistence;
 

Спасибо

Ответ №1:

Используйте отражение annotation объекта (например getDeclaredMethods ). Это покажет методы получения для подобъектов. Исходя из этого, вы можете делать все, что вам нужно.