Определите импорт и настройку аннотаций JPA - PullRequest
0 голосов
/ 20 января 2019

Мне нужно определить несколько объектов, и каждый раз используемые аннотации одинаковы, поэтому мне интересно, возможно ли объединить эти аннотации в одну.

Например.

@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 голосов
/ 20 января 2019

Использование метаннот будет простым. Предполагая, что у вас есть Spring в вашем classpath, вы также можете передавать параметры. Решение для этого: AliasFor.

Вы можете проверить документ для полной картины, но это соответствующая часть:

@Documented
...
@Accessors( chain = true )
public @interface CutomEntity {

    @AliasFor(annotation = Table.class, attribute = "name")
    String tableName();

    @AliasFor(annotation = EqualsAndHashCode.class, attribute = "id")
    String sequenceName();

    // ...
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...