• redis 序列化get、set获取不到原因记录


           最近项目里面出现了个bug,把数据从数据库中读取后又存取到redis里面,之后再读取。奇怪的是,有一个 字段读取不到。

    public class Circle  {
    
        private String id; // 圈子主键ID
        private String code; // 圈子编码
        private String name; // 圈子名称
        private String logo; // 圈子头像
        private String parentType;// 圈子分类父ID
        private String type; // 圈子分类
        private String introdruce; // 圈子简介
        private String advertise; // 圈子公告
        private String creator; // 圈子创建人,圈主,关联名片ID
        private Date createTime; // 创建时间
        private long updateTime; // 更新时间
        private int permission = -1; // 加入权限 1暗号,2审核,0直接加入
        private String password; // 圈子暗号
        private long passwordExpire = -1; // 圈子暗号失效时间
        private int permissionView = -1; // 圈子是否对所有人可见 0:是1:否
        private int topNum; // 推荐排序
        private int orderNum; // 推荐排序
        private String province; // 省名称
        private String city; // 市名称
        private int provinceCode; // 省代码    
        private int cityCode; // 市代码
        private String qrCode;//社群二维码
        private int state; // 删除状态 1删除,0未删除  2 封号  
        private int tId;//云信ID    
        private int bill; // 是否有群钱包权限, 0没有,1有 
        private int videoLiveAuth; // 是否有视频授权权限, 0没有,1有 
        private int audioLiveAuth; // 是否有音频授权权限, 0没有,1有 
    
        private String shareUrl;//静态化分享地址
    
        private int muteState; //社群禁言状态    1全体禁言                0全体解除禁言 (默认)
        private int chatState;// 私聊状态              0 可以私聊  (默认)             1 禁止私聊
    
        private Integer dynamicOrder; //动态排序字段
    
        private String  adPic;//广告图片
        private String adUrl;//广告链接
        private String noticePic;//公告图片
        private String noticeUrl;//公告链接
    
        private String tip;        //群打赏  
    
        private String sealReason; //社群封号原因 
    
        private String yunId;
    
      //省略get set代码
    }

    没有获取的字段是pId,存取的时候 先从数据库中读取,这个时候是有值的。再把整个对象 序列化后存取。但是读的时候总是0. 

      原因就是:使用idea的get/set快捷生成建的方法:

      

    public int gettId() {return tId;
        }
    
        public void settId(int tId) {
    this.tId = tId; }

    经过redis序列化是获取不到的。

       而且这个get set 也不太标准,具体的源码没找到,但是把 tId改成tid 再重新生成get set方法是可以获取的了。因为这个类使用到的地方太多,缓存采取的策略是 重新写一个 entity,把tid重新赋值,然后把这个新的entity 放到缓存里面。这样既可获取。

  • 相关阅读:
    对于线程同步的浅薄理解
    线程安全之ConcurrentQueue<T>队列
    关于mybatis拦截器,对结果集进行拦截
    oracle 分析函数
    C# ikvm 运行htmlunit Provider com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl not found
    IronJs 无相关源?
    js div 内容显示分页
    JavascriptTAB切换 AND JqueryTAB切换
    php中mysql数据库操作类 -李盛鹏 -博客园
    sublime text 之snippet功能的使用 -李盛鹏 -博客园
  • 原文地址:https://www.cnblogs.com/thinkingandworkinghard/p/9429786.html
Copyright © 2020-2023  润新知