Java 8 + Hibernate 5 MySQL TIMESTAMP / DATETIME到LocalDateTime Mapping

时间:2015-11-23 01:26:55

标签: java mysql hibernate hibernate-5.x

决定更新到Hibernate 5以删除现有的Date to LocalDateTime转换。我从Maven安装了hibernate-java8工件。然后我将我的休眠实体日期时间替换为

@Column (name = "mis_a_jour_au", nullable = false)
@Temporal (TemporalType.TIMESTAMP)
private LocalDateTime misAJourAu;

@Column (name = "envoi_au", nullable = false)
@Temporal (TemporalType.TIMESTAMP)
private LocalDateTime envoiAu;

抛出此异常

  

org.hibernate.AnnotationException:@Temporal只应在java.util.Date或java.util.Calendar属性上设置

如果删除@Temporal,则异常变为

  

ClassCastException:java.util.Date无法强制转换为java.time.LocalDateTime

我认为Java 8 + Hibernate 5支持LocalDateTime?请指教。

2 个答案:

答案 0 :(得分:3)

只需删除该行:     @Temporal (TemporalType.TIMESTAMP) 在每种情况下,你定义它。

Hibernate 5读取LocalDateTime作为类型,并正确地将数据作为时间戳插入数据库。目前没有太多信息,因为他们发布的产品和文档将随之而来。

答案 1 :(得分:2)

@Column(name = "updated", columnDefinition="DATETIME")
private LocalDateTime updated;

@Column(name = "created", columnDefinition="TIMESTAMP")
private LocalDateTime created;