SSH日期录入,日期精确不能精准到时分秒处理

来源:互联网 发布:域名到期时间影响seo 编辑:程序博客网 时间:2024/06/06 04:04

          数据库类型定义为datetime的时候,数据库是精确到时分秒的,我们要录入的时候,hibernate只能用save方法进行录入,无法使用hql语句录入。但是会有很多人录入的时候日期只是精确到日,这是为什么呢,怎么实现精确到时分秒呢。

       我们先对HQL语句进行说明,为什么HQL语句不能执行添加操作呢,因为hibernate的HQL语言是用于面向对象实现的查询功能的,然而在插入操作中是不会涉及到任何查询动作的,所以HQL语句不能用于insert语句的插入操作,而select、update、delete语句都可以有可能实现查询。

比如:select语句是标准的查询,这个就不用说明了。

update语句:update对象名 set......where

delect语句:delect from 对象名 where......

update和delect都涉及到where的查询筛选过程,这个过程是需要采用HQL实现的,然而insert永远都不会涉及到筛选过程,所以所以hibernate没有对插入做insert实现,所以HQL语句不能执行插入操作,所hibernate实现插入操作只能使用save方法。

但是有一些人发现日期转换器写了,而且是转换到时分秒了,而且在控制台输出的也是有时分秒的,但是到了数据库里面就变成了精确到日了,这个问题怎么解决呢,其实很简单的。

如果你们使用的是由hibernate 的逆向工具从数据库表生成的*.hbm.xml ,对于数据库的date类型生成如下:

 

<property name = "Knowledge_time" type= "date">
            <column name = "Knowledge_time" />
        </property >

程序中的类型:
private Date Knowledge_time ;
但通过程序setKnowledge_time(new Date()) 的时候,插入到数据库的日期只到日,没有小时以后的数据。
只要把type类型改为timestamp就可以了
如下是最终修改:
        <property name ="Knowledge_time " type="timestamp">
            <column name ="Knowledge_time "   />
        </property >


0 0
原创粉丝点击