是@Temporal首选@Column columnDefinition?

Pau*_*zie 6 java hibernate jpa

哪个是最佳做法?

@Column(name = "FOO", columnDefinition = "TIMESTAMP")
private Date foo;
Run Code Online (Sandbox Code Playgroud)

要么

@Column(name = "FOO")
@Temporal(TemporalType.TIMESTAMP)
private Date foo;
Run Code Online (Sandbox Code Playgroud)

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

Sea*_*oyd 9

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

确实如此.columnDefinition指定将使用的SQL数据类型.但是,此数据类型可能并非在所有RDBMS中都可用.在JPA中,JPA提供者有责任弄清楚SQL在哪个DB上工作.您可以指定部分配置,但始终存在破坏对某些数据库的支持的风险.

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