Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11
Enum data types
Supported by ✅ Open Source Edition ✅ Express Edition ✅ Professional Edition ✅ Enterprise Edition
Enumerated data types are a vendor specific SQL feature by some RDBMS that allow for adding a constraint like restriction to a VARCHAR column. PostgreSQL style enum types can be created using the CREATE TYPE .. AS ENUM statement.
There are mainly two flavours:
// PostgreSQL: Explicit, reusable types
CREATE TYPE day_of_week AS ENUM ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
CREATE TABLE t (day_of_week day_of_week);
// MySQL: Implicit, ad-hoc types
CREATE TABLE t (day_of_week ENUM ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'));
In both cases, a org.jooq.EnumType class is generated by the code generator, containing type information as well as the enum literals.
public enum DayOfWeek implements EnumType {
Mon("Mon"),
Tue("Tue"),
Wed("Wed"),
Thu("Thu"),
Fri("Fri"),
Sat("Sat"),
Sun("Sun");
// ...
}
Even without code generation, any enum type that also implements jOOQ's org.jooq.EnumType can be used to construct a org.jooq.DataType:
DataType<DayOfWeek> dayOfWeekType = VARCHAR.asEnumDataType(DayOfWeek.class);
And then, the type can be attached to any expression, e.g. if generated code is not available:
// Plain SQL template based
Field<DayOfWeek> f1 = DSL.field("my_table.day_of_week", emailType);
// Name based
Field<DayOfWeek> f2 = DSL.field(name("my_table", "day_of_week"), emailType);
Feedback
Do you have any feedback about this page? We'd love to hear it!