Hibernate在保存和更新Date类型的数据到数据库的时候,如果设置不当,会舍弃时分秒,和数据库中Date类型的精确度不符(如Oracle的Date是带时分秒的).
引起的原因主要是mapping文件中的字段类型被设成了type="date",而mapping文件一般都是通过hibernate提供的工具生成的,hibernate提供的工具默认把数据库端date型的字段设成type="date".从而Hibernate在用JDBC做数据库更新的时候会用 statement的setDate(index, sqlDate),插入数据库的日期只有年月日.
下面的JDBC代码演示了这个问题:
String sql = "UPDATE Timetest T SET T.datev=? WHERE T.id=?";
stmt = conn.prepareStatement(sql);
// java.sql.Date sqlDate = new java.sql.Date(26,7,2010);
// sqlDate.setTime(System.currentTimeMillis());
// stmt.setDate(1, sqlDate); //如果是用setdate的方式,时分秒会被舍弃
//用setTimestamp的方式,时分秒会被保存
stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
stmt.setLong(2, 1L);
stmt.executeUpdate();
conn.commit();
使用时需要注意的问题:
1,如果是用Hibernate的对象来影射数据库操作(save,load..),需要将mapping文件的type="date"改成type="timestamp".
2,如果用Query(session的createQuery和createSQLQuery),在赋值的时候用query.setTimestamp(0, new Date());
?
?
String hql = " from table tb where tb.startdate = :Startdate ";?
Query q = session.createQuery(hql).setString( "Startdate ", sdate);?
修改为:?
String hql = " from table tb where tb.startdate like :Startdate ";?
Query q = session.createQuery(hql).setString( "Startdate ", sdate+ "% ");?
?
分享到:
相关推荐
hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档
DAO层中对Hiberante实例,大家交流一下
Hiberante3.jar + API
hiberante查询方式使用详解,有hql,sql,qbc,以及存储过程,hiberante的基础查询
最新springboot2基础hiberante5完整项目,打包jar,运行jsp,包括后台与前台,拦截器,登录,后台下载就可以使用,注意不是jpa,里面有完整Dao,千万级数据项目分离的代码,为了适合老项目开发特意集成hiberante5....
开发工具:MyEclipse 6....Struts+Spring+Hiberante框架整合的简单登录系统 无需配置任何文件、只需在mysql中创建一个空数据库 如:create database test; 注:mysql数据库用户名:root 密码:root
hibernate 源码 和hibernate配置的html文档。。非常全面的介绍了hibernate配置。分别在src和zh-cn文件中
spring整合
Hibernate Tools是一套全新而且完整的面向Hibernate3的工具集合,它包含了Eclipse插件和Ant编译流程。Hibernate Tools是JBoss Tools的核心组件,所以他也是JBoss Developer Studio的一部分
Hiberante HTML 帮助文档 Hiberante HTML 帮助文档 Hiberante HTML 帮助文档
Struts2+Hiberante+ajax+三级联动,提供完整的JAR包和MYSQL数据库文件
hibernate5.0.7jar包,主要是jar包,方便大家下载使用。主要是jar包,方便大家下载使用。主要是jar包,方便大家下载使用
Struts2+hiberante+Spring+Extjs+OA办公系统,完整包正常运行
hiberante4.2.3-part01
hiberante4.2.3-part2
spring4+hiberante4+struts2+maven最新框架
hiberante annotations reference_cn
Hiberante3_HQL,Hibernate3_缓存机制,Hibernate3_数据加载
添加各种项目需要的配置:文件上传 国际化等等 拦截器 日志记录等
hiberante-4.2.3-part3