逻辑对象中时间类型 保存时 隐藏bug

开发功能中的一些逻辑对象中的一些时间 属性,在保存数据库时有一个隐藏的bug,假如 我vo属性定义的就是date 类型,那我定时保存数据库时可能就会出错,eq:假如这个属性隔天要重置一些东西,表中这个字段昨天已经保存有一个过期时间即昨天的某个时间点,现在今天我又登陆了,拿这个vo时由于时间重置,要重置成新的时间,由于工作需要,我需要重置成null,这个时间当保存定时器到时保存这个vo时,其他更改的属性都保存了,结果这个时间属性没有更改,还是昨天的过期时间,这是什么情况,假如内存中的这个vo消失后我再登陆 拿这个vo就出问题了,应该这个vo的这个时间属性还是昨天的,导致我账号数据错乱了,那为啥 那个时间属性保存不了呢,是因为游戏中用的是hibernate,由于hibernate 再保存一些 属性时如果 表映射 entity  中对应内存属性值为 null 时 是不会把null 同步到数据库表中,上边遇到的问题,因为那个时间字段重置为null,保存通过hibernate 映射机制保存数据库表时 就不会把 这个null 值替换到表中,所以表中的这个属性还是昨天 错误的过期时间 。这种问题怎么避免,就是vo中的这些  时间属性尽量都用 int型代替,保存时用new Date(value * 1000L)即可,拿时用现成的getDateSec() 方法即可,内存中属性不要直接用date 类型即可了。

时间: 2024-11-05 22:43:07

逻辑对象中时间类型 保存时 隐藏bug的相关文章

复制一张表的数据到另一张表,jq.grid里面有时间类型数据时展示不了数据

1.复制一张表的数据到另一张表 insert into jct_sys_lock_tbl_new  (BGN_DT, END_DT, TYPE, DESCR, flag, format, range, count)  select BGN_DT, END_DT, TYPE, DESCR, flag, format, range, count    from jct_sys_lock_tbl 也可以: insert into jct_sys_lock_tbl_new  select *    fr

MySql中时间类型总结

最近建表要用到时间类型的数据,但对时间类型的数据一向不了解,就总结了一下.. 一.日期DATE 一个日期.支持的范围是"1000-01-01"以"9999-12-31".MySQL显示日期用 "YYYY-MM-DD"格式,但允许使用字符串或数字列赋值日期. 1.在一个字符串"YYYY-MM-DD"或"yy-mm-dd"格式."不严格"语法是允许任何标点符号 字符可以作为之间的日期部分的分

java中时间类型的问题

时间类型:System.currentTimeMillis() 获得的是自1970-1-01 00:00:00.000 到当前时刻的时间距离,类型为longimport java.sql.Date date = new Date(System.currentTimeMillis()); 2015-11-06import java.sql.Time time = new Time(System.currentTimeMillis()); 09:51:09import java.sql.Timest

mysql中时间类型datetime,timestamp与int的区别

在mysql中存储时间,我们可以用datetime 格式,timestamp格式,也可以用int格式.那么我们设计的时候该如何考虑呢? 首先,我觉得应该明白这几个格式究竟是如何的,然后看看他们的区别,这样我们才能思考何时使用正确的格式. DATETIME格式,默认是"YYYY-MM-DD HH:MM:SS",这19个字符表示的,从1000-01-01 00:00:00-9999-12-31 23:59:59 . TIMESTAMP格式也是'YYYY-MM-DD HH:MM:SS'这样的

oracle 中时间类型 date 与 long 互转

原文:http://www.cnblogs.com/lambertwe/p/6116402.html 今天在项目中查询流程相关信息中,发现了其中的日期字段存的信息很奇怪,是一串数值,后面发现是long类型或者integer类型数值,然后就需要转行成相应的日期格式了. 在网上搜索一番得到解决: 1.date转long: select sysdate, (sysdate-to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss'))* 24*60*60

dataTable中时间类型数据格式化

var table=$('.table-sort').dataTable({ "Processing": false, // 是否显示取数据时的那个等待提示 "bServerSide": true,//这个用来指明是通过服务端来取数据 "bPaginate": true, //是否显示分页 "sAjaxSource": "${cxtPath}/employee/ListPageByName",//这个是请求

mybaits中date类型显示时分秒(orcle数据库)

<insert id="insert" parameterType="daSysLoginLog"> insert into DA_SYS_LOGINLOG( LOGINIP, LOGINDATE, USERID, ID )VALUES ( #{loginip}, #{logindate}, #{userid}, #{id} ) </insert> 在date类型后面不要加上jdbcType=DATE就可以显示了:下面是错误代码 <in

MySQL中日期和时间类型

1 日期类型 MySql中关于日期的类型有Date/Datetime/Timestamp三种类型. 日期赋值时,允许"不严格"语法:任何标点符都可以用做日期部分或时间部分之间的间割符.例如,'98-12-31 11:30:45'.'98.12.31 11+30+45'.'98/12/31 11*30*45'和'[email protected]@31 11^30^45'是等价的,对于不合法的将会转换为:0000-00-00 00:00:00 1.1 Date格式 此类型的字段,存储数据

java中存储mysql数据库时间类型【date、time、datetime、timestamp】

在MySQL中对于时间的存储自己见表的时候都是设置的varchar类型的,感觉挺方便的. 昨天拿别人建好的表写代码,发现这张表中时间类型为datetime的,凭感觉试了一下不行,网上查了刚开始试了好几个都是不对的,一脸懵逼. -----------------------------------------------------------------------------------------------------------------------------------------