У меня есть этот спящий класс с аннотациями:Как создать мета-аннотации на уровне поля?
@Entity
public class SimponsFamily{
@Id
@TableGenerator(name = ENTITY_ID_GENERATOR,
table = ENTITY_ID_GENERATOR_TABLE,
pkColumnName = ENTITY_ID_GENERATOR_TABLE_PK_COLUMN_NAME,
valueColumnName = ENTITY_ID_GENERATOR_TABLE_VALUE_COLUMN_NAME)
@GeneratedValue(strategy = GenerationType.TABLE, generator = ENTITY_ID_GENERATOR)
private long id;
...
}
Поскольку Я не won't аннотировать каждый ID поле моих классов, кстати, я пытался создать пользовательскую заметку:
@TableGenerator(name = ENTITY_ID_GENERATOR,
table = ENTITY_ID_GENERATOR_TABLE,
pkColumnName = ENTITY_ID_GENERATOR_TABLE_PK_COLUMN_NAME,
valueColumnName = ENTITY_ID_GENERATOR_TABLE_VALUE_COLUMN_NAME)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface EntityId {
@GeneratedValue(strategy = GenerationType.TABLE, generator = ENTITY_ID_GENERATOR)
public int generator() default 0;
@Id
public long id() default 0;
}
так, что я могу использовать эту аннотацию в моем классе:
@Entity
public class SimponsFamily{
@EntityId
private long id;
...
}
Я должен написать @Id
и анкеты @GeneratedValue
на уровне поля, так как они не поддерживают TYPE RetentionPolicy. Эти решения, похоже, работают.
Мои вопросы:
Как аннотации на уровне полей в моих пользовательских аннотаций (и значения) переданы моему использованию EntityId аннотацию?
Как насчет значений по умолчанию, которые я установил в своей пользовательской аннотации, используются ли они, поскольку я не указываю атрибуты при использовании?
Это предпочтительный способ использования аннотаций на уровне поля в аннотациях?
Моя надежда была, что я могу избежать суперкласс, но, возможно, это путь ... возможно, мой вопрос - скорее общая проблема с аннотацией, а проблема спящего режима. Thx в любом случае! – thilko