Community
Participate
Working Groups
I have discovered a pattern in my JPA mappings that I would like to codify. A simple example follows: @OneToMany(fetch=FetchType.EAGER) @Sort(type=SortType.NATURAL) private SortedSet<Item> items; I would like to create a single annotation called SortedOneToMany that I can apply to the above set: public @interface SortedOneToMany { FetchType fetch() default EAGER; SortType sort() default NATURAL; Class comparator() default void.class; } I have written the following aspect to "attach" the JPA annotations whenever it sees my annotation: public aspect SortedOneToManyAspect { declare @field: @SortedOneToMany * * : @OneToMany(fetch=FetchType.EAGER); declare @field: @SortedOneToMany * * : @Sort(type=SortType.NATURAL); } But I don't know how can I access the values of the SortedOneToMany annotation parameters and use them when defining the OneToMany and Sort annotations. There may be cases where I want to change one of the default values like so: @SortedOneToMany(sort=SortType.COMPARATOR,comparator=ItemComparator.class) private SortedSet<Item> items; So how can I pass the annotation values from SortedOneToMany to the Sort annotation? Hypothetical syntax from Andy Clement: declare @field: @SortedOneToMany(sort=SortType.COMPARATOR,comparator={1}) * * : @Sort(type=SortType.COMPARATOR,comparator={1});