在Hibernate中对于java.util.Date类型的映射为: java类型 Hibernate类型 Mysql类型 java.util.Date、java.sql.Date date DATE java.util.Date、java.sql.Time time TIME java.util.Date、java.sql.Timestamp timestamp TIMESTAMP 如果使用timestamp作为Date

在Hibernate中对于java.util.Date类型的映射为:

java类型 Hibernate类型 Mysql类型

java.util.Date、java.sql.Date date DATE

java.util.Date、java.sql.Time time TIME

java.util.Date、java.sql.Timestamp timestamp TIMESTAMP

如果使用timestamp作为Date类型映射时,具体代码如下:

Java代码

public class User {

private String userPK;

private String userID;

private String password;

private String nickname;

private boolean state;

private boolean role;

private Date registerDate;

private int points;

public String getUserPK() {

return userPK;

}

private void setUserPK(String userPK) {

this.userPK = userPK;

}

public String getUserID() {

return userID;

}

public void setUserID(String userID) {

this.userID = userID;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getNickname() {

return nickname;

}

public void setNickname(String nickname) {

this.nickname = nickname;

}

public Date getRegisterDate() {

return registerDate;

}

public void setRegisterDate(Date registerDate) {

this.registerDate = registerDate;

}

public int getPoints() {

return points;

}

public void setPoints(int points) {

this.points = points;

}

public void setState(boolean state) {

this.state = state;

}

public boolean getState(){

return this.state;

}

public void setRole(boolean role) {

this.role = role;

}

public boolean getRole(){

return this.role;

}

}

映射代码:

Xml代码

hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

Java代码

User testUser = new User();

testUser.setRegisterDate(new Date);

session.save(testUser);

存储结束之后,由数据库中重新查询出此对象:

Java代码

User savedUser = session.load(User.class,id);

而此时

testUser.getRegisterDate.equals(savedUser.getRegisterDate)返回值为 false;

此时可发现test.getRegisterDate().class为java.util.Date, savedUser.getRegisterDate().class为java.sql.Timestamp。查看java的文档可知

java doc 写道

The Timestamp.equals(Object) method never returns true when passed an object that isn't an instance of java.sql.Timestamp, because the nanos component of a date is unknown. As a result, the Timestamp.equals(Object) method is not symmetric with respect to the java.util.Date.equals(Object) method.

也就是说Timestamp和Date类型并不能进行相等比较的。当然在程序中比较两个时间点 的相等性是不切合实际的,但如果一些特殊应用需要比较的话,可以使用其他方法解决。 例如:

Java代码

public void setRegisterDate(Date registerDate) {

this.registerDate = new Date(registerDate.getTime());

}

这样即可顺利转变类型及值了。但是Hibernate中并没有对java.util.Date类型进行很 好的映射,个人也觉得可以不采用Date类型记录时间,可适当考虑Calendar类型。

hibernate java.util.date 精度_hibernate中java.util.Date类型映射相关推荐

  1. java string转sql date_Java中的util.Date,sql.Date,sql.Time,String类型转换

    今天总结一下工具类中Date类型. java.sql.Date,java.sql.Time,和java.sql.Timestamp(时间戳记)都是java.util.Date的子类. java.sql ...

  2. java小数丢失精度_Java中的小数运算与精度损失

    float.double类型的问题 我们都知道,计算机是使用二进制存储数据的.而平常生活中,大多数情况下我们都是使用的十进制,因此计算机显示给我们看的内容大多数也是十进制的,这就使得很多时候数据需要在 ...

  3. java.util接口_Java 8中java.util.function包中的谓词和使用者接口

    java.util接口 在上一篇文章中,我写了关于Function接口的内容 ,它是java.util.package的一部分. 我还提到了Predicate接口,它是同一包的一部分,在这篇文章中,我 ...

  4. linux java运行环境_linux(centos)中java运行环境_jdk安装与配置 | OPS技术联盟

    系统版本 [root@iZwz95n2hxcdh4x6vicjmgZ ~]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) ...

  5. java 可变 不可变_java中的不可变类型的探究

    不可变类是指创建类的对象实例后,该实例的属性不能发生改变.常见的String就是不可变类.不可变类型的属性值不会发生改变,这在多线程编程的时候非常有用,不用担心对象的属性值被修改. 下面我们来看看如何 ...

  6. java float的精度_java中的float和double的精度问题

    此文解释了为何float的范围比int大(同样4字节),但有些int是float无法正确表达的(精度丢失) java中的float和double的精度问题 1.背景知识 在java中没有细讲,只是讲了 ...

  7. java 提取违反顺序_oracle 中 java.sql.SQLException: ORA-01002: 提取违反顺序

    在一个流程中设置了一个机器人节点,目的是:审批结束后,通过update语句,将表单中的一些内容更新到数据库person_info_t的表中,并将更新前后的值记录到新表info_update_recor ...

  8. java 导出mdb文件_Java中Java生成mdb文件工具类

    package com.util; /**  * Java生成mdb文件[MS Access文件]  * 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的 ...

  9. was java heap space_实战项目中Java heap space错误的解决

    部标GPS通讯系统在上线之后,经过不断调试,终于稳定运行一段时间,后来又遇到了Java heap space错误异常!日志如下: 说明系统中有未释放的对象.如何找出这些未释放对象以及监控JVM堆内存, ...

  10. java比较时间戳大小_JAVA中两个String类型的时间戳怎么样比较大小?

    1.从数据库里面获得的时间戳是String类型的,要与当前时间比较,判断登陆是否过期 生成一long类型的当前时间,把String类型强制转换成long类型报错,代码如下: long currentT ...

最新文章

  1. 作为产品经理,你需要了解的基本算法知识和实操
  2. android 窗口缩放,Android界面整体缩放
  3. 阿里云Redis开发规范
  4. gin context和官方context_gin 源码阅读(一) -- 启动
  5. Asp.net常用技巧
  6. 太惨了!卖一个月不如小米卖一天,手机一哥仍不甘心
  7. 但是的近义词是什么,怎么用但是造句?
  8. Web前端开发之“常见模块你真的很了解吗?”
  9. docker--删除container和image
  10. Android 原生工程接入mPaas框架
  11. 计算机及移动设备管理软件,终端管理软件
  12. SpringBoot+POI方式导出excel【加水印】
  13. java工具类_16 个超级实用的 Java 工具类
  14. CYGWIN安装方法
  15. autojs切换输入法
  16. java+s2sh+mysql报刊订阅系统系统
  17. H2O的机器学习框架的数据分析应用
  18. Tikhonov regularization 吉洪诺夫 正则化
  19. 反常识—股票暴跌收益会更高
  20. php大道至简之框架

热门文章

  1. 【元胞自动机】基于matlab保守策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型【含Matlab源码 1294期】
  2. 【VRP】基于matlab遗传算法求解多车辆路径规划问题【含Matlab源码 1249期】
  3. 【图像加密】基于matlab GUI混沌系统灰色图像加密解密(带面板)【含Matlab源码 1240期】
  4. 【房价预测】基于matlab Elman神经网络房价预测【含Matlab源码 589期】
  5. 【滤波器】基于matlab GUI低通+带通+高通FIR与IIR滤波器设计【含Matlab源码 360期】
  6. java小数正负数据类型_Java - day001 - 8种基本数据类型
  7. 变形金刚图纸_变形金刚救援
  8. pgm图像缩小C语言,C++将二进制(P5)图像转换为ascii(P2)图像(.pgm)
  9. wincc几个常用c语言编程软件,WINCC几个常用C语言编程
  10. LeetCode 1——两数之和