2017-09-15 191 views
0

當使用StringRedisSerializer存儲哈希值時,我遇到了ClassCastException異常。如果刪除了非字符串字段'age',那麼它可以存儲到redis中。當使用StringRedisSerializer作爲HashValueSerializer時,不能存儲非字符串對象

Demo demo = new Demo(); 
    demo.setName("DemoCache_jsonSerializer"); 
    // non-string field 
    demo.setAge(111); 



    // set stringSerializer 
    redisTemplate.setHashValueSerializer(new StringRedisSerializer()); 
    //exception here: java.lang.Integer cannot be cast to java.lang.String 
    redisTemplate.opsForHash().putAll("testKey", 
      mapper.toHash(demo)); 

我知道,如果我改變jsonserializer它會工作,但我的問題是 如何保持它與StringRedisSerializer工作,並能夠存儲具有非字符串字段

回答

0

使用StringRedisSerializer你對象只能將String轉換爲byte[]byte[]String。 若要讓它與StringRedisSerializer一起工作,最好將所有對象轉換爲String也許覆蓋toString()。但我想這可能是一個糟糕的設計。

看看下面的鏈接:Source CodeDocumentation你可能會發現有用的東西。

相關問題