在Hibernate中为LocalDateTime创建列类型Datetime

时间:2018-10-05 13:24:01

标签: java hibernate jpa

使用JPA在MariaDB中创建列类型Datetime的正确方法是什么?我尝试过:

@Column
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime created_at;

但是我得到了例外:

Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: org.plugin.entity.Transactions.created_at

您可以提出一些解决方案吗?

2 个答案:

答案 0 :(得分:2)

您有一个spring-boot-starter-data-jpa依赖项,其中有hibernate-core作为编译依赖项。

如果您使用的是Spring Boot 1.4.x或更高版本,则会获得Hibernate 5:

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa/1.4.0.RELEASE

您只需添加以下依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.0.0.Final</version>
</dependency>

提供对Java 8 LocalDateTime API的支持。

如果您使用的是Spring引导版本2.x.x或更高版本,spring-boot-starter-data-jpa随带有内置Java 8 LocalDateTime API的hibernate 5.2一起提供,因此不需要其他依赖项。

您可以简单地写:

private LocalDateTime created_at;

答案 1 :(得分:0)

将Hibernate更新到5.x或最新版本,有

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.0.0.Final</version>
</dependency>

您无需执行其他任何操作。只需添加依赖项即可。当然,其他Java8类型也应该起作用。

private LocalDateTime created_at;