discriminator
Purpose
Customizes the discriminator column used in table-per-subclass inheritance mapping.
Examples
class Content { … }
class PodCast extends Content { … static mapping = { discriminator "audio" } }
Description
Usage: discriminator(string/map)
Arguments:
column
(optional) - The column name to store the discriminatorvalue
- The value to use for the discriminatorformula
(optional) - an SQL expression that is executed to evaluate the type of class. Use this orcolumn
but not bothtype
(optional defaults to string) - the Hibernate type, used for the where clause condition to know if it needs to wrap it with '
By default when mapping inheritance Grails uses a single-table model where all classes share the same table. A discriminator column is used to determine the type for each row, by default the full class name. You can use the discriminator
method to customize what's stored:
class Content { … }
class PodCast extends Content { … static mapping = { discriminator "audio" } }
You can also customize the discriminator column name:
class Content { … static mapping = { discriminator column: "content_type" } }
class PodCast extends Content { … static mapping = { discriminator value: "audio" } }
Or you can use a formula:
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" } }