Java 是否首选@Temporal而不是@Column columnDefinition?

Java 是否首选@Temporal而不是@Column columnDefinition?,java,hibernate,jpa,Java,Hibernate,Jpa,哪一种是最佳实践 @Column(name = "FOO", columnDefinition = "TIMESTAMP") private Date foo; 或 文档表明使用columnDefinition是不可移植的 文档表明,使用columnDefinition是不可移植的 没错。指定将使用的SQL数据类型。但是,此数据类型可能并非在所有RDBMS中都可用。在JPA中,JPA提供者有责任弄清楚什么样的SQL在什么样的数据库上工作。您可以指定该配置的一部分,但总有破坏某些数据库支持的风

哪一种是最佳实践

@Column(name = "FOO", columnDefinition = "TIMESTAMP")
private Date foo;

文档表明使用columnDefinition是不可移植的

文档表明,使用columnDefinition是不可移植的

没错。指定将使用的SQL数据类型。但是,此数据类型可能并非在所有RDBMS中都可用。在JPA中,JPA提供者有责任弄清楚什么样的SQL在什么样的数据库上工作。您可以指定该配置的一部分,但总有破坏某些数据库支持的风险

另一方面,是作为JPA标准一部分的抽象。对于所有受支持的数据库,每个JPA提供程序都必须能够将不同类型的
@Temporal
映射到不同的SQL类型

@Column(name = "FOO")
@Temporal(TemporalType.TIMESTAMP)
private Date foo;