将日期类型更改为JPA实体中的Java 8 LocalDate是否正确?

时间:2014-05-28 13:10:44

标签: java-8

例如改变这个:

@Entity
public class Person {   
    @Past
    @Temporal(TemporalType.DATE)
    @Column(name = "birth_date", length = ConstantNumeric.TWENTY_FIVE)
    private Date birthDate;
...
}

对此:

@Entity
public class Person {   
    @Past
    @Temporal(TemporalType.DATE)
    @Column(name = "birth_date", length = ConstantNumeric.TWENTY_FIVE)
    private LocalDate birthDate;
...
}

这是Java 8项目的正确方法吗?或者最好在需要时将LocalDate转换为日期?

1 个答案:

答案 0 :(得分:1)

我知道这些问题已经过时了,但无论如何我都会给出答案。

从JPA 2.1开始,您可以按照here的说明使用AttributConverter。简而言之,您必须实施javax.persistence.AttributeConverter<LocalDate, Date>才能从LocalDate转换为Date,反之亦然。 然后,您可以直接在JPA实体中使用LocalDate类型的属性。