(快速参考)

辨别器

用途

自定义在表层次继承映射中使用的辨别器列。在使用表子类继承映射时无效。

示例

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"
    }
}