我将只在数据库中存储year值并检索它。

这是我的域名(POJO

@Entity
public class Publisher {

public Publisher(..., Date establishDate) {
    //assign other variables
    this.setEstablishDate(establishDate);
}

    @NotNull
    private Date establishDate;
...
}


这是我的DTO:

@NotNull
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy")
private Long establish_date;


在这里,我正在创建一个新的发布者:

new Publisher(..., new Date(this.establish_date));


我为1370发送了一个值为establish_date的json(用于发布新的发布者),但是在数据库中它显示为:1970-01-01 03:30:01

为什么?

当我得到Publisher时,它将establish_date显示为1000

怎么了 ?

最佳答案

您使用了错误的构造函数。该参数指定自1970年以来的毫秒数-而不是年份:Date(long)您可以使用正确的构造函数:Date(int, int, int)

请注意,大多数Date API已弃用。还有更好的替代方法,例如CalendarDateTime。由于只存储年份,因此也可以使用纯整数。这将使事情变得容易得多。

10-08 14:59