2010-03-10 6 views
15

Hallo Ich habe eine Unterklasse, die mehrere Diskriminatorwerte abdecken muss.Hibernate Subclass mit mehreren Diskriminatorwerten

so etwas wie:

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

würde mich perfekt machen.

wir haben bestehende Daten, bei denen mehrere Diskriminatoren können eine Klasse zugeordnet werden (wie sie ähnliche Arten von dem, was unser System sind die gleiche Sache betrachtet)

Antwort

21

können Sie DiscriminatorFormula verwenden:

// 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

Perfekt, genau das, wonach OP gefragt hat. –

+0

Danke eine Million Brian. Ich habe das gleiche getan, aber die @ DiscriminatorFormula in die Unterklasse eingefügt. (Duh) Das funktioniert einwandfrei –

+0

Gut. Ich kann keine Dokumentation oder ein Beispiel über '@ DiscriminatorFormula' finden. Wann kann ich es finden? –

3

Eine Unterklasse hat genau 1 Diskriminatorwert.

Sie können weitere Unterklassen unter der vorhandenen Unterklasse für die zusätzlichen Diskriminatorwerte hinzufügen. Unterklassen müssen keine zusätzlichen Eigenschaften oder Verhaltensweisen aufweisen.

+0

Richtig, aber dieser Wert kann über eine Formel erhalten werden, die auf mehreren Werten arbeiten, zum Beispiel '' (siehe [link] (http://www.nhforge.org/doc/nh/en/#mapping-declaration-discriminator)) HINWEIS: Ich schließe das ein, weil ich wissen wollte, wie man es innerhalb des Hibernate XML macht, und das könnte jemandem in Zukunft helfen. – barclay

Verwandte Themen