使用@Temporal比@Column columnDefinition更好吗?

7
哪种是最佳实践?
@Column(name = "FOO", columnDefinition = "TIMESTAMP")
private Date foo;

或者

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

文档建议不要使用columnDefinition,因为它是非可移植的...

1个回答

11

文档建议不要使用columnDefinition,因为它是不可移植的...

这是真的。在JPA中,columnDefinition指定了将要使用的SQL数据类型。然而,这种数据类型可能并不适用于所有RDBMS。在JPA中,JPA提供程序负责确定哪些SQL适用于哪个数据库。您可以指定部分配置,但始终存在破坏某些数据库支持的风险。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接