我必须定义几个实体,并且每次使用的注释都相同时,所以我想知道是否有可能将这些注释组合为一个。
例如。
@Entity
@Data
@NoArgsConstructor
@Table( name = "my_entity", schema = "tableschema" )
@EqualsAndHashCode( of = "id" )
@SequenceGenerator( name = "sequence_id", sequenceName = "sequence_id", schema = "tableschema" )
@Accessors( chain = true )
public class MyEntity {
}
因此,我想定义一个可以恢复所有这些注释的注释,并且在这里我只能更改表名,序列名和模式名。 像这样:
@Documented
@Target(TYPE)
@Retention(RUNTIME)
@Entity
@Data
@NoArgsConstructor
@Table
@EqualsAndHashCode( of = "id" )
@SequenceGenerator
@Accessors( chain = true )
public @interface CutomEntity {
String tableName();
String schemaName();
String sequenceName();
}
并将这些参数分别引用到每个注释中。
答案 0 :(得分:0)
使用元符号将很简单。 假设您的类路径上有Spring,也可以传递参数。的解决方案是AliasFor
。
您可以查看文档的完整图片,但这是相关的部分:
@Documented
...
@Accessors( chain = true )
public @interface CutomEntity {
@AliasFor(annotation = Table.class, attribute = "name")
String tableName();
@AliasFor(annotation = EqualsAndHashCode.class, attribute = "id")
String sequenceName();
// ...
}