几天前,我被迫使用以下结构进行课堂宣传:
@Table(name="UserPattern", uniqueConstraints={
@UniqueConstraint(columnNames={"user_id", "patern_id"})
})
我对这种语法感到非常惊讶。
通常我认为如果我应该将数组传递给注释O,我应该写下以下内容:
declared_inside_annotation_name={value1,value2...}
但在这种情况下,它看起来如下:
uniqueConstraints={
@UniqueConstraint(columnNames={"user_id", "patern_id"})
}
@Table
注释声明:
@Target(TYPE)
@Retention(RUNTIME)
public @interface Table {
String name() default "";
String catalog() default "";
String schema() default "";
UniqueConstraint[] uniqueConstraints() default { };
Index[] indexes() default {};
}
请澄清这种语法。
答案 0 :(得分:1)
您的declared_inside_annotation_name
示例中的预期语法与@Table
注释的语法之间实际上没有冲突。注释的数组属性的元素类型不一定必须是字符串(可能是您所期望的)。它实际上可能是另一个注释。
uniqueConstraints
注释的@Table
属性就是这种情况。如果检查UniqueConstraint
类的声明,您会发现它本身就是一个注释。将其写下来时,您可以使用通常的@AnnotationTypeName
表示法。