ฉันกำลังใช้ Spring data redis และหนึ่งในเอนทิตีของฉันมีรายการดังต่อไปนี้
@RedisHash("person")
@Data
@Builder
public class Person implements Serializable {
@Id
private String name;
private List<Address> addressList;
}
public class Address implements Serializable {
private String postCode;
private String country;
}
การทำให้เป็นอนุกรมทำงานได้ดีและที่อยู่จะถูกเก็บไว้เป็น
HGETALL person:123456
"name"
"blabla"
"address[0].postCode"
"1111XX"
"address[1].country"
"IN"
แต่ในขณะที่รับบุคคลกลับรายการจะเป็นโมฆะเสมอ? ใครสามารถชี้ให้เห็นสิ่งที่ฉันทำผิดที่นี่
การกำหนดค่า Redis ของฉันมีลักษณะดังนี้
@Configuration
@EnableRedisRepositories
public class RedisConfiguration {
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
return new JedisConnectionFactory();
}
@Bean
public RedisTemplate<String, String> redisTemplate() {
final RedisTemplate<String, String> template = new RedisTemplate<>();
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
mapper.findAndRegisterModules();
template.setKeySerializer(redisSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
}