JPA/hibernate时间戳未在数据库/对象实体中保存

7

我正在使用javax.persistence作为实体对象的框架,数据库是Mysql。 我的实体对象有一个字段entryDate。

@Column(name = "ENTRYDATE")   
private Date entryDate=new Date();

当我使用saveOrUpdate方法保存对象时,只有日期被保存。我还想保存时间戳和日期。由于我已经在字段声明中声明了日期,所以我不需要显式设置日期。如何在保存日期的同时也保存时间戳呢?
谢谢。
2个回答

14

使用

@Temporal(TemporalType.TIMESTAMP) 

在您的属性上。

4
没错。为了进一步澄清,如果您正在使用java.util.Date或java.util.Calendar,则需要指定时间类型(TemporalType.Date仅包括天、月和年,TemporalType.TIME仅包括时间(小时、分钟、秒),或者TemporalType.TIMESTAMP同时包括时间和日期)。如果您正在使用java.sql.Date、java.sql.Time或java.sql.Timestamp,则不需要@Temporal注释。 - esaj
2
我正在使用java.util.Date。我已经尝试了@Temporal注释,但时间戳仍然保存为00:00:00 00。不知道我做错了什么?有什么建议吗? - Arpan Solanki
@Daniel 我正在保存两个日历实例。我已将第一个实例设置为variable1,并将相同的日期向后推一周并保存到variable2中。当我将对象保存到数据库中时,这两个属性具有相同的值,这是第一个Calendar实例的值。我不知道问题出在哪里,因为在持久化对象之前打印它们时,它们的值是正确的。 - h-rai
@nick-s:请开一个新问题,并展示你代码的部分。 - Daniel
为什么要使用那个注释?我干脆把它整个删掉了。 - Robyn Paxton
显示剩余3条评论

0
@Column(name = "ENTRYDATE")  
@Temporal(TemporalType.TIMESTAMP) 
private Date entryDate=new Date();

如果您想保存时间戳,请尝试使用此方法,否则您可以使用TemporalType.Date(仅保存日期)和TemporalType.Time(仅保存时间)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接