8. JPA @Temporal注解详解

来源:互联网 发布:java调用maven仓库 编辑:程序博客网 时间:2024/05/20 15:41

在核心的JPA API中没有定义Date类型的精度,数据库中表示Date类型的数据有DATE,TIME,TIMESTAMP三种精度,可通过@Temporal注解进行调整

@Table(name = "CUSTOMERS")@Entitypublic class Customer {    @Column(name = "ID")    @GeneratedValue(strategy = GenerationType.AUTO)    @Id    private Integer id;    @Column(name = "Name")    private String name;    @Column(name = "Email")    private String email;    @Column(name = "Age")    private int age;    @Temporal(TemporalType.DATE)    @Column(name="Birthday")    private Date birthday;    @Temporal(TemporalType.TIMESTAMP)    @Column(name="CreateTime")    private Date createTime;    ......}

数据库DDL:

CREATE TABLE `customers` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `Age` int(11) DEFAULT NULL,  `Birthday` date DEFAULT NULL,  `CreateTime` datetime DEFAULT NULL,  `Email` varchar(255) DEFAULT NULL,  `Name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

当然@Column的columnDefinition属性也可以实现相同的效果

@Table(name = "CUSTOMERS")@Entitypublic class Customer {    @Column(name = "ID")    @GeneratedValue(strategy = GenerationType.AUTO)    @Id    private Integer id;    @Column(name = "Name")    private String name;    @Column(name = "Email")    private String email;    @Column(name = "Age")    private int age;    @Column(name="Birthday",columnDefinition="date")    private Date birthday;    @Column(name="CreateTime",columnDefinition="datetime")    private Date createTime;}
0 0