Ho questa classe Hibernate con annotazioni:Come creare metriche annotazioni a livello di campo?
@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;
...
}
Dal Io non vinto't per annotare ogni id campo delle mie classi in quel modo, ho cercato di creare un anotation personalizzato:
@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;
}
in modo che posso usare questa annotazione nella mia classe:
@Entity
public class SimponsFamily{
@EntityId
private long id;
...
}
devo scrivere il @Id
e le anteprime @GeneratedValue
a livello di campo poiché non supportano la proprietà Retention TYPE. Questa soluzione sembra funzionare.
Le mie domande:
Come sono le annotazioni livello di campo nelle mie annotazioni personalizzate (e valori) trasferiti al mio uso di EntityID annotazioni?
E i valori predefiniti che ho impostato nella mia annotazione personalizzata, vengono utilizzati poiché non specificherò gli attributi durante l'utilizzo?
È un metodo preferibile per utilizzare annotazioni a livello di campo nelle annotazioni?
La mia speranza era che io possa evitare una superclasse, ma forse questa è la strada da percorrere ... forse la mia domanda è più un problema di annotazione generale piuttosto un problema di ibernazione. Thx comunque! – thilko