Java注释组合,重新使用属性



我想做这样的事情:

@QueryHints(@QueryHint(name = "org.hibernate.fetchSize", value = FetchSize.value()))
@Target({ })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FetchSize {
    String value();
}

不起作用的部分是value=FetchSize.value()。我想把@FetchSize的value属性交给目标注释@QueryHint,这样我就可以这样注释:

@FetchSize("1000")

这样的事情有可能吗?我该如何让它发挥作用?

不,这样的事情是不可能的。注释属性的值必须是常量表达式(和/或其他一些类型,如enum类型)。

这里要做的是动态引用另一个注释属性的值。这是不可能的。

如果您控制注释处理器,那么您可以在那里执行该逻辑。如果你不这样做,你就太倒霉了,必须重新考虑你的设计。

最新更新