001package io.ebean.config.dbplatform; 002 003import java.sql.Types; 004 005/** 006 * The known DB types that are mapped. 007 * <p> 008 * This includes extra types such as UUID, JSON, JSONB and HSTORE. 009 * </p> 010 */ 011public enum DbType { 012 013 BOOLEAN(Types.BOOLEAN), 014 BIT(Types.BIT), 015 INTEGER(Types.INTEGER), 016 BIGINT(Types.BIGINT), 017 SMALLINT(Types.SMALLINT), 018 TINYINT(Types.TINYINT), 019 REAL(Types.REAL), 020 //FLOAT(Types.FLOAT), 021 DOUBLE(Types.DOUBLE), 022 DECIMAL(Types.DECIMAL), 023 VARCHAR(Types.VARCHAR), 024 CHAR(Types.CHAR), 025 BLOB(Types.BLOB), 026 CLOB(Types.CLOB), 027 LONGVARBINARY(Types.LONGVARBINARY), 028 LONGVARCHAR(Types.LONGVARCHAR), 029 VARBINARY(Types.VARBINARY), 030 BINARY(Types.BINARY), 031 DATE(Types.DATE), 032 TIME(Types.TIME), 033 TIMESTAMP(Types.TIMESTAMP), 034 035 ARRAY(Types.ARRAY), 036 037 LOCALDATETIME(ExtraDbTypes.LOCALDATETIME), 038 UUID(ExtraDbTypes.UUID), 039 INET(ExtraDbTypes.INET), 040 CIDR(ExtraDbTypes.CIDR), 041 042 POINT(ExtraDbTypes.POINT), 043 POLYGON(ExtraDbTypes.POLYGON), 044 LINESTRING(ExtraDbTypes.LINESTRING), 045 MULTIPOINT(ExtraDbTypes.MULTIPOINT), 046 MULTILINESTRING(ExtraDbTypes.MULTILINESTRING), 047 MULTIPOLYGON(ExtraDbTypes.MULTIPOLYGON), 048 049 HSTORE(ExtraDbTypes.HSTORE), 050 JSON(ExtraDbTypes.JSON), 051 JSONB(ExtraDbTypes.JSONB), 052 JSONCLOB(ExtraDbTypes.JSONClob), 053 JSONBLOB(ExtraDbTypes.JSONBlob), 054 JSONVARCHAR(ExtraDbTypes.JSONVarchar); 055 056 private final int id; 057 058 DbType(int id) { 059 this.id = id; 060 } 061 062 /** 063 * Return the JDBC java.sql.Types value. 064 */ 065 public int id() { 066 return id; 067 } 068 069 /** 070 * Create a platform type without scale or precision. 071 */ 072 public DbPlatformType createPlatformType() { 073 return new DbPlatformType(name().toLowerCase()); 074 } 075}