2013-05-24 2 views
8

È possibile avere annotazioni Java applicate in modo condizionale? Ad esempio, consente di dire che ho una mappatura Hibernate con una sequenza ragionata:Annotazioni condizionali basate sull'ambiente

@Id 
@Column(name = "TABLE_ID") 
@GeneratedValue(strategy = SEQUENCE, generator = "generator") 
@SequenceGenerator(name = "generator", sequenceName = "TABLE_SEQ") 
public Long getId() { 
    return this.Id; 
} 

E 'possibile fare qualcosa di simile alla seguente, in cui le annotazioni vengono rimossi basano su, per esempio, una variabile d'ambiente?

@Id 
@Column(name = "TABLE_ID") 
if(env.equals('dev')){ 
    @GeneratedValue(strategy = SEQUENCE, generator = "generator") 
    @SequenceGenerator(name = "generator", sequenceName = "TABLE_SEQ")} 
public Long getId() { 
    return this.Id; 
} 

NOTA: capisco che in questo scenario è possibile utilizzare i file * .hbm.xml per diversi ambienti, però mi piacerebbe utilizzare le annotazioni in quanto vi sono meno file per mantenere.

+2

Risposta breve, no, non è così. Risposta media, è possibile * utilizzare un processore di annotazioni per eseguire il lavoro, ma è necessario mantenere un processore di annotazione. –

+0

@RC inserire come risposta. – djechlin

+0

@djechlin fatto;) –

risposta

6

(come richiesto)

Risposta breve, no non lo è. Risposta media, è possibile utilizzare un processore di annotazioni per eseguire il lavoro, ma è necessario mantenere un processore di annotazione.