在Spring Booot应用中,我需要保留内容的创建日期。为此目的,通常会使用LocalDateTime
,但我认为使用Instant
更好,因为这个字段就像一个时间戳。另一方面,我刚刚看到@CreationTimestamp
,我对正确的用法感到困惑。
@CreationTimestamp
private LocalDateTime createdAt;
那么,我需要在Hibernate中使用@CreationTimestamp作为日期时间字段吗?或者在我的实体中使用Instant
来保持创建日期是否可以,如下所示?
private Instant createdAt;
1条答案
按热度按时间lsmepo6l1#
@CreationTimestamp是一个Hibernate注解,当实体持久化到数据库中时,它会自动将实体创建时间戳设置为当前时间。此注解适用于java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp和java.time.LocalDateTime类型。它等效于使用LocalDateTime.now()设置值。
如果你想存储一个毫秒精度的时间戳,那么使用Instant是一个不错的选择,Instant是java.time包中的一个类,它表示一个时间点,相对于纪元(1970年1月1日,00:00:00 UTC),精度为纳秒。
因此,可以使用Instant将创建日期存储在实体类中,如下所示:
在将实体持久化到数据库之前,可以使用www.example.com()将createdAt字段设置为当前时间戳Instant.now。
总之,可以使用Instant将创建日期存储在实体类中并手动设置,或者使用@CreationTimestamp在Hibernate中自动设置创建时间戳。这两种方法都有效,具体选择取决于您的用例和偏好。