我想做这样的事情:
@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")
这样的事情是否可能,以及如何使其发挥作用?
答案 0 :(得分:3)
不,这样的事情是不可能的。注释属性的值必须是常量表达式(和/或其他一些类型,如enum
类型)。
您在这里尝试做的是动态引用另一个注释属性的值。那是不可能的。
如果您控制注释处理器,那么您可以在那里执行该逻辑。如果你不这样做,那么你将不得不重新考虑你的设计。