Ada*_*ard 7 java annotations aspectj
我在我的JPA映射中发现了一种我想编写的模式.一个简单的例子如下:
@OneToMany(fetch=FetchType.EAGER)
@Sort(type=SortType.NATURAL)
private SortedSet<Item> items;
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为SortedOneToMany的注释,我可以应用于上面的集合:
public @interface SortedOneToMany {
FetchType fetch() default EAGER;
SortType sort() default NATURAL;
Class comparator() default void.class;
}
Run Code Online (Sandbox Code Playgroud)
我写了以下方面,以便在看到我的注释时"附加"JPA注释:
public aspect SortedOneToManyAspect {
declare @field: @SortedOneToMany * * : @OneToMany(fetch=FetchType.EAGER);
declare @field: @SortedOneToMany * * : @Sort(type=SortType.NATURAL);
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何访问SortedOneToMany注释参数的值并在定义OneToMany和Sort注释时使用它们.在某些情况下,我想更改其中一个默认值,如下所示:
@SortedOneToMany(sort=SortType.COMPARATOR,comparator=ItemComparator.class)
private SortedSet<Item> items;
Run Code Online (Sandbox Code Playgroud)
那么如何将SortedOneToMany中的注释值传递给Sort注释呢?
我在aspectj-users 邮件列表上收到了 Andy Clement 的回答:
你好,
恐怕您现在无法使用 AspectJ 做到这一点,您无法将一条匹配的信息传递给新注释。我也许可以想象一些假设的语法:
声明 @field: @SortedOneToMany(sort=SortType.COMPARATOR,comparator={1}) * * : @Sort(type=SortType.COMPARATOR,comparator={1});
这似乎可以实现你想要的。
也许提出增强请求: https://bugs.eclipse.org/bugs/enter_bug.cgi ?product=AspectJ
抱歉,我没有更好的消息。
欢呼安迪
我为该问题创建了一张票,以防有人想要跟踪进度:https://bugs.eclipse.org/bugs/show_bug.cgi?id =345515
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |