gpt4 book ai didi

java - Spring Data Redis - 存储日期时出现问题

转载 作者:可可西里 更新时间:2023-11-01 11:48:46 25 4
gpt4 key购买 nike

我正在使用 Spring Boot + Spring data Redis 示例将日期保存到 Redis 缓存中。虽然我使用了 @DateTimeFormat @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd"),但持久性的发生仍然是长期值(value)。看起来是一毫秒。

有人可以指导我是否需要设置额外的配置来保留日期,例如 yyyy-MM-dd

HGETALL users:1
1) "_class"
2) "com.XXX.entity.User"
3) "userId"
4) "1"
5) "name"
6) "John"
7) "createdDate"
8) "1542043247352"

实体类:

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("users")
public class User {
@Id
private Long userId;
private String name;

@DateTimeFormat
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date createdDate;
private List<Group> groups;
}

UPDATE-1::根据我实现的建议,但仍然无法正常工作CustomDateSerializer.java

@Component
public class CustomDateSerializer extends JsonSerializer<Date> {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}

自定义界面

@Retention(RetentionPolicy.RUNTIME)
public @interface MyJsonFormat {
String value();
}

模型类

@MyJsonFormat("dd.MM.yyyy") 
@JsonSerialize(using = CustomDateSerializer.class)
private Date createdDate;

最佳答案

我建议改用 LocalDateTime(或 LocalDate,如果您愿意)。然后,您可以使用

注释您的字段
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime createdAt;

使用 jackson 的 jsr310 添加:

import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;

关于java - Spring Data Redis - 存储日期时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53267203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com