स्प्रिंग-बूट-स्टार्टर-डेटा-रेडिस:2.0.4.रिलीज़ के साथ परीक्षण किया गया ।
मैं एक समस्या का सामना कर रहा था जहाँ मेरा OffsetDateTime
मेरे @RedisHash
. के गुण CrudRepository
. का उपयोग करते समय इकाई संग्रहीत नहीं की जा रही थी ।
समस्या यह थी कि Jsr310Converters
OffsetDateTime
. का कनवर्टर नहीं है ।
इसे हल करने के लिए, मैंने एक रीडिंग कन्वर्टर बनाया:
@Component
@ReadingConverter
public class BytesToOffsetDateTimeConverter implements Converter<byte[], OffsetDateTime> {
@Override
public OffsetDateTime convert(final byte[] source) {
return OffsetDateTime.parse(new String(source), DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
}
और लेखन कनवर्टर:
@Component
@WritingConverter
public class OffsetDateTimeToBytesConverter implements Converter<OffsetDateTime, byte[]> {
@Override
public byte[] convert(final OffsetDateTime source) {
return source.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME).getBytes();
}
}
और एक RedisCustomConversions
पंजीकृत किया है कॉन्फ़िगरेशन में बीन:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.convert.RedisCustomConversions;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
import java.util.Arrays;
@Configuration
@EnableRedisRepositories
public class RedisConfiguration {
@Bean
public RedisCustomConversions redisCustomConversions(OffsetDateTimeToBytesConverter offsetToBytes,
BytesToOffsetDateTimeConverter bytesToOffset) {
return new RedisCustomConversions(Arrays.asList(offsetToBytes, bytesToOffset));
}
}