定义注释导入和自定义JPA注释

时间:2019-01-20 14:38:57

标签: java jpa annotations

我必须定义几个实体,并且每次使用的注释都相同时,所以我想知道是否有可能将这些注释组合为一个。

例如。

@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();
}

并将这些参数分别引用到每个注释中。

1 个答案:

答案 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();

    // ...
 }