不能将Long类型转化为String类型(java.lang.Long cannot be cast to java.lang.String)

UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class);
//userDTO对象里里有的字段是Long类型的
Map<String, Object> userMap = BeanUtil.beanToMap(userDTO);
//
stringRedisTemplate 执行 putAll方法时不允许有值为空或者为Long(此时报错)
stringRedisTemplate.opsForHash().putAll(tokenKey,userMap);

解决方法:

        UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class);
        //执行putAll方法的时候会出现Long类型不允许转化为String类型
        //所以转化为map是要对userDTO对象做修改
        //setIgnoreNullValue(true)是允许为空字段
        //fieldValue.toString()是将其他类型都转化为String
        Map<String, Object> userMap = BeanUtil.beanToMap(userDTO,new HashMap<>(),
                CopyOptions.create()
                        .setIgnoreNullValue(true)
                        .setFieldValueEditor((fieldName,fieldValue) -> fieldValue.toString()));
     stringRedisTemplate.opsForHash().putAll(tokenKey,userMap);

 

P33-31:00分钟

https://www.bilibili.com/video/BV1cr4y1671t?p=33&vd_source=9739dbf60076a45502de1fb324bb3804

 

posted @ 2023-03-04 23:40  Java仲达  阅读(2097)  评论(0)    收藏  举报