Я обнаружил в своих сопоставлениях 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?