Java 8 在JPA实体中将日期类型更改为Java 8 LocalDate是否正确?
例如,更改此项:Java 8 在JPA实体中将日期类型更改为Java 8 LocalDate是否正确?,java-8,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 @Tempora
@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;
...
}
这是Java8项目的正确方法吗?或者最好在需要时将LocalDate转换为Date?我知道这个问题很老,但无论如何我都会给出答案 从JPA2.1开始,您可以使用
attributeconverter
s,如前所述。简单地说,您必须实现javax.persistence.AttributeConverter
才能从LocalDate
转换为Date
,反之亦然。
然后您可以直接在JPA实体中使用
LocalDate
类型的属性。No,这两种类型完全不同java.util.Date
是一个类似unix的全局时间戳,而java.time.LocalDate
只是一个普通的日期,没有任何时区引用。而且JPA还不支持新的Java-8-time库。请详细说明您的答案,因为它不是一个只有链接的答案。