我想做这样的事情:
@QueryHints(@QueryHint(name = "org.hibernate.fetchSize", value = FetchSize.value()))
@Target({ })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FetchSize {
String value();
}
无效的部分是value = FetchSize.value().我想将值属性从@FetchSize传递给目标注释@QueryHint,以便可以这样注释:
@FetchSize("1000")
这样的事情有可能以某种方式出现吗,我将如何使其工作?
解决方法:
不,这样的事情是不可能的.注释属性的值必须是常量表达式(和/或其他一些类型,例如枚举类型).
您要在此处执行的操作是动态引用另一个注释属性的值.那不可能
如果您控制注释处理器,则可以在那里执行该逻辑.如果您不这样做,那么您将很不幸,将不得不重新考虑您的设计.