(快速參考)

識別符

目的

自訂階層繼承對應中使用的識別符欄位。在使用子類別繼承對應時,沒有作用。

範例

class Content {
    ...
}
class PodCast extends Content {
    ...
    static mapping = {
        discriminator "audio"
    }
}

說明

用法:discriminator(string/map)

引數

  • column (選用) - 儲存識別符的欄位名稱

  • value - 識別符要使用的值

  • formula (選用) - 評估類別類型的 SQL 表達式。使用此項或 column,但不可同時使用兩者

  • type (選用,預設為字串) - Hibernate 類型,用於 where 子句條件,以判斷是否需要用 '

預設情況下,在對應繼承時,Grails 會使用單一表格模型,其中所有類別共用同一表格。識別符欄位用於判斷每列的類型,預設為完整類別名稱。你可以使用 discriminator 方法自訂儲存的內容

class Content {
    ...
}
class PodCast extends Content {
    ...
    static mapping = {
        discriminator "audio"
    }
}

你也可以自訂識別符欄位名稱

class Content {
    ...
    static mapping = {
        discriminator column: "content_type"
    }
}
class PodCast extends Content {
    ...
    static mapping = {
        discriminator value: "audio"
    }
}

或者,你可以使用公式

class Content {
    ...
    static mapping = {
        discriminator value: "1", type: "integer",
            formula: "case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end",
    }
}
class PodCast extends Content {
    ...
    static mapping = {
        discriminator value: "0"
    }
}