在JPA规范中规定,并不是所有的类型的属性都可以为持久化的,表为可映射为持久化的属性类型。
表 可持久化的数据类型
分类 |
类型 |
Java的基本数据类型 |
byte, int, short, long, boolean, char, float, double |
Java基本数据类型对应的封装类 |
Byte, Integer, Short, Long, Boolean, Character, Float, Double |
字节和字符型数组 |
byte[], Byte[], char[], Character[] |
大数值型类 |
java.math.BigInteger, java.math.BigDecimal |
字符串类型 |
String |
时间日期型 |
java.util.Date, java.util.Calendar,java.sql.Date,java.sql.Time,java.sql.Timestamp |
枚举类型 |
用户定义的枚举类型 |
Entity类型 |
标注为@Entity的类 |
包含Entity类型的集合Collction类 |
java.util.Collction,java.util.Set,java.util.List,java.util.map |
嵌入式(embeddable)类 |
参见5.7小节 |
Java数据类型与数据库中的类型转换是JPA实现框架自动转换的,所以不同的JPA实现框架转换的规则也不太一样。
例如MySQL中,varchar和char类型都转化为String类型。Blob和Clob类型可以转化成Byte []型。由于类型的转化是JPA底层来实现的,这就遇到一个问题,很有可能在将表中的数据转换成Java的数据类型时出现异常,这就是接下来要讲述注意的问题。