哪个是最佳做法?
@Column(name = "FOO",columnDefinition = "TIMESTAMP") private Date foo;
要么
@Column(name = "FOO") @Temporal(TemporalType.TIMESTAMP) private Date foo;
文档表明使用columnDefinition是不可移植的……
解决方法
@H_403_13@The documentation suggests that using columnDefinition is non-portable
…
确实如此. columnDefinition
指定了将使用的sql数据类型.但是,此数据类型可能并非在所有RDBMS中都可用.在JPA中,JPA提供者有责任弄清楚sql在哪个DB上工作.您可以指定部分配置,但始终存在破坏对某些数据库的支持的风险.
另一方面,@Temporal
是一种抽象,是JPA标准的一部分.每个JPA提供程序必须能够将不同类型的@Temporal映射到所有受支持数据库的不同sql类型.