• 逻辑对象中时间类型 保存时 隐藏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 类型即可了。

  • 相关阅读:
    SpringBoot安装和创建简单的Web应用
    Java设计模式-原型模式
    Java设计模式-单例模式
    Java设计模式-抽象工厂模式(Abstarct Factory)
    Java设计模式-工厂方法模式(Virtual Constructor/Polymorphic Factory)
    Java设计模式-简单工厂模式(Static Factory Method)
    Angular5学习笔记
    设置Nodejs NPM全局路径
    Actor模式初步入门
    Angular5学习笔记
  • 原文地址:https://www.cnblogs.com/wzhanke/p/4398923.html
Copyright © 2020-2023  润新知