当您准备Hibernate映射文件中,我们已经看到,映射Java数据类型到关系型数据库的数据类型。声明并在映射文件中使用的类型不是Java数据类型;同时也不是SQL数据库的数据类型。这些类型就是所谓的Hibernate映射类型,它可以从Java转换到SQL数据类型,反之亦然。本章列出了所有的基础上,日期和时间,大对象,以及其他各种内置的映射类型。
Primitive types:#
| Mapping type | Java type | ANSI SQL Type |
|---|---|---|
| integer | int or java.lang.Integer | INTEGER |
| long | long or java.lang.Long | BIGINT |
| short | short or java.lang.Short | SMALLINT |
| float | float or java.lang.Float | FLOAT |
| double | double or java.lang.Double | DOUBLE |
| big_decimal | java.math.BigDecimal | NUMERIC |
| character | java.lang.String | CHAR(1) |
| string | java.lang.String | VARCHAR |
| byte | byte or java.lang.Byte | TINYINT |
| boolean | boolean or java.lang.Boolean | BIT |
| yes/no | boolean or java.lang.Boolean | CHAR(1) ('Y' or 'N') |
| true/false | boolean or java.lang.Boolean | CHAR(1) ('T' or 'F') |
Date and time types:#
| Mapping type | Java type | ANSI SQL Type |
|---|---|---|
| date | java.util.Date or java.sql.Date | DATE |
| time | java.util.Date or java.sql.Time | TIME |
| timestamp | java.util.Date or java.sql.Timestamp | TIMESTAMP |
| calendar | java.util.Calendar | TIMESTAMP |
| calendar_date | java.util.Calendar | DATE |
Binary and large object types:#
| Mapping type | Java type | ANSI SQL Type |
|---|---|---|
| binary | byte[] | VARBINARY (or BLOB) |
| text | java.lang.String | CLOB |
| serializable | any Java class that implements java.io.Serializable | VARBINARY (or BLOB) |
| clob | java.sql.Clob | CLOB |
| blob | java.sql.Blob | BLOB |
JDK-related types:#
| Mapping type | Java type | ANSI SQL Type |
|---|---|---|
| class | java.lang.Class | VARCHAR |
| locale | java.util.Locale | VARCHAR |
| timezone | java.util.TimeZone | VARCHAR |
| currency | java.util.Currency | VARCHAR |
补充阅读#
说明 Hibernate 映射类型表应怎样用于 Java 属性与数据库列之间的类型检查。
如何理解与使用#
表中的名称属于 Hibernate 的映射层,不能直接等同于 Java 类名或任意数据库的实际列类型;还应考虑所用方言和框架版本。
验证与边界#
对日期、精度、空值和大字段,分别检查实体声明、生成或已有表结构,以及读写往返结果;历史映射表不应直接替代当前版本文档。
