Đã kiểm tra với spring-boot-starter-data-redis:2.0.4.RELEASE .
Tôi đang gặp sự cố trong đó OffsetDateTime
của mình thuộc tính của @RedisHash
của tôi thực thể không được lưu trữ khi sử dụng CrudRepository
.
Vấn đề là Jsr310Converters
không có trình chuyển đổi OffsetDateTime
.
Để giải quyết vấn đề này, tôi đã tạo một trình chuyển đổi đọc:
@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);
}
}
và viết công cụ chuyển đổi:
@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();
}
}
Và đã đăng ký RedisCustomConversions
bean trong cấu hình:
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));
}
}