2010-03-10 9 views
15

Ciao Ho una sottoclasse che deve coprire più valori di discriminatore.Hibernate Sottoclasse con più valori discriminatori

qualcosa di simile:

@DiscriminatorValue (value = "ACT", "DNR", "ATT")

avrebbe fatto di me perfetta.

abbiamo dati esistenti dove diversi discriminatori possono essere mappati a una classe (come sono tipi simili di quello che il nostro sistema considererà la stessa cosa)

risposta

21

È possibile utilizzare DiscriminatorFormula:

// Base class 
@DiscriminatorFormula("case when value in ('ACT','DNR','ATT') then 1 
    when 'OTH' then 2 else 3 end") 

// Subclass 
@DiscriminatorValue("1") // maps to ACT, DNR, ATT 
+0

Perfetto, esattamente quello che l'OP chiedeva. –

+0

Grazie mille Brian. Stavo facendo la stessa cosa ma inserendo @DiscriminatorFormula nella sottoclasse. (Duh). Funziona perfettamente –

+0

Buono. Non riesco a trovare alcun documento o esempio su '@ DiscriminatorFormula'. Quando posso trovarlo? –

3

Una sottoclasse ha esattamente 1 Valore discriminatore.

È possibile aggiungere sottoclassi secondarie sotto la sottoclasse esistente per i valori di discriminazione extra. Le sottoclassi non devono avere proprietà o comportamenti aggiuntivi.

+0

corretto, ma che valore può essere ottenuto attraverso una formula che funziona su più valori, ad esempio, '' (vedi [link] (http://www.nhforge.org/doc/nh/en/#mapping-declaration-discriminator) NOTA: l'ho incluso perché volevo sapere come farlo all'interno dell'Hibernate XML e questo potrebbe aiutare qualcuno in futuro. – barclay

Problemi correlati