我将只在数据库中存储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已弃用。还有更好的替代方法,例如Calendar
和DateTime
。由于只存储年份,因此也可以使用纯整数。这将使事情变得容易得多。