哪种是最佳做法?
@Column(name = "FOO", columnDefinition = "TIMESTAMP")
private Date foo;
或者
@Column(name = "FOO")
@Temporal(TemporalType.TIMESTAMP)
private Date foo;
文档建议使用columnDefinition是不可移植的......
答案 0 :(得分:9)
文档建议使用columnDefinition是不可移植的 ...
这是真的。 columnDefinition
指定了将使用的SQL数据类型。但是,此数据类型可能并非在所有RDBMS中都可用。在JPA中,JPA提供者有责任弄清楚SQL在哪个DB上工作。您可以指定该配置的一部分,但您总是冒险破坏对某些数据库的支持。
@Temporal
是一个抽象,是JPA标准的一部分。每个JPA提供程序必须能够将不同类型的@Temporal
映射到所有受支持数据库的不同SQL类型。