2010-03-10 47 views
15

你好我有一個子類需要覆蓋多個鑑別值。休眠子類有多個鑑別值

類似:

@DiscriminatorValue(值= 「ACT」, 「DNR」, 「ATT」)

會做我完美。

我們現有的數據,其中幾種鑑別可以映射到一個類(因爲它們是相似類型的東西我們的系統會考慮同樣的事情)

回答

21

可以使用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

完美,正是OP要求的。 – 2010-03-10 07:33:47

+0

感謝百萬Brian。我正在做同樣的事情,但把@DiscriminatorFormula放在子類中。 (杜)。這是完美的工作 – 2010-03-10 19:14:55

+0

好。我找不到任何有關'@ DiscriminatorFormula'的文檔或示例。我什麼時候可以找到它? – 2012-07-31 07:18:19

3

子類恰好有1鑑別值。

您可以在現有子類下爲額外的鑑別符值添加其他子類。子類不需要具有其他屬性或行爲。

+0

正確的,但是可以通過對多個值的工作原理的公式,例如,'<鑑別式=「情況下,當CLASS_TYPE在(‘一個’,'來獲得該值b','c')then 0 else 1 end「type =」Int32「/>'(參見[link](http://www.nhforge.org/doc/nh/en/#mapping-declaration-discriminator) )注意:因爲我想知道如何在Hibernate XML內部執行此操作,所以這可能有助於將來的某個人。 – barclay 2012-03-12 19:17:49