gpt4 book ai didi

java - 使用 AspectJ 将一个注释转换为多个注释

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:40 25 4
gpt4 key购买 nike

我在我的 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 注释?

最佳答案

我在 aspectj-users 邮件列表上收到了 Andy Clement 的回答:

Hi,

I'm afraid you can't do that with AspectJ right now, you can't pass a piece of the matched information to the new annotation. I can perhaps imagine some hypothetical syntax:

declare @field: @SortedOneToMany(sort=SortType.COMPARATOR,comparator={1}) * * : @Sort(type=SortType.COMPARATOR,comparator={1});

which would seem to achieve what you want.

Maybe raise an enhancement request for it: https://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ

sorry I don't have better news.

cheers Andy

我为这个问题创建了一张票,以防有人想关注进度:https://bugs.eclipse.org/bugs/show_bug.cgi?id=345515

关于java - 使用 AspectJ 将一个注释转换为多个注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com