Я обнаружил шаблон в моих отображениях JPA, который я хотел бы кодифицировать. Вот простой пример:
@OneToMany(fetch=FetchType.EAGER)
@Sort(type=SortType.NATURAL)
private SortedSet<Item> items;
Я хотел бы создать одну аннотацию под названием SortedOneToMany, которую можно применить к вышеуказанному набору:
public @interface SortedOneToMany {
FetchType fetch() default EAGER;
SortType sort() default NATURAL;
Class comparator() default void.class;
}
Я написал следующий аспект для «прикрепления» аннотаций JPA всякий раз, когда он видит мою аннотацию:
public aspect SortedOneToManyAspect {
declare @field: @SortedOneToMany * * : @OneToMany(fetch=FetchType.EAGER);
declare @field: @SortedOneToMany * * : @Sort(type=SortType.NATURAL);
}
Но я не знаю, как получить доступ к значениям параметров аннотации SortedOneToMany и использовать их при определении аннотаций OneToMany и Sort. Могут быть случаи, когда я хочу изменить одно из значений по умолчанию, например:
@SortedOneToMany(sort=SortType.COMPARATOR,comparator=ItemComparator.class)
private SortedSet<Item> items;
Так как я могу передать значения аннотации из SortedOneToMany в аннотацию Sort?