spring - Spring data redis 库无法转换 Joda DateTime 对象
问题描述
我们如何使用 spring redis 模板存储和检索将 Joda DateTime 作为字段的数据库对象?
我尝试在 GenericJackson2JsonRedisSerializer() 方法中传递自定义对象映射器。该对象映射器在我们的应用程序中工作正常,并正确转换所有数据库对象(也具有 DateTime 字段)。但是在 GenericJackson2JsonRedisSerializer() 中使用相同的映射器,它将值存储为 LinkedHashMap 而不是数据库对象类的类型。如何存储和检索与数据库对象类具有相同类型的对象?下面是没有传递对象映射器的代码,导致以下结果。
@Bean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(getJedisConnectionFactory());
template.setKeySerializer( new StringRedisSerializer());
template.setHashValueSerializer( new GenericJackson2JsonRedisSerializer());
template.setValueSerializer( new GenericJackson2JsonRedisSerializer());
return template;
}
无法读取 JSON:无法识别的字段 \"era\"(类 org.joda.time.DateTime),未标记为可忽略(2 个已知属性:\"chronology\"、\"millis\"])\n 在 [Source :(通过引用链:services->java.util.ArrayList[0]->models[\"dateAdd\"]->org.joda.time.DateTime[\"era\"]); 嵌套异常是 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field \"era\" (class org.joda.time.DateTime),未标记为可忽略(2 个已知属性:\"chronology\", \" millis\"])\n (通过引用链:->java.util.ArrayList[0]->models[\"dateAdd\"]->org.joda.time.DateTime[\"era\"])"
解决方案
推荐阅读
- javascript - JS 中的 Async/Await 混淆
- javascript - 如何使用 jquery/javascript 在 asp.net c# 中禁用单选按钮单击上的链接按钮
- servicenow - Servicenow UI 策略脚本以引用从引用字段中提取数据的字段
- file-upload - 使用@stream_request_body 在龙卷风中上传大文件
- exception - Flutter - 突然得到这个错误 ERROR_INVALID_USER_TOKEN
- android - 无法更改导航抽屉切换图标
- javascript - 赛普拉斯 - 如何等待 XHR 请求
- flutter - RangeError(索引):无效值:只有有效值是0:1
- javascript - sampleDocument 不可分配给类型 T
- java - 电话号码上的 Firebase 短信验证无法手动进行