java - @Temporal 优于@Column columnDefinition 吗?

标签 java hibernate jpa

哪个是最佳实践?

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

或者

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

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

最佳答案

The documentation suggests that using columnDefinition is non-portable ...

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

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

关于java - @Temporal 优于@Column columnDefinition 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744195/

相关文章:

java - 在 Java 中使用 hibernate 从数据库中填充组合框

java - 使用 JPA 2.1 生成元模型类

java - 如何通过MySql DB上的Spring Jdbc模板在获取列表中应用限制和偏移量

mysql - 将密码加密到 Spring3.1、Hibernate4 和 Jasypt1.90 的配置文件中不适用于 MySQL 服务器 5

java - 当文本字段留空时,为什么我的程序崩溃?

java - 使用 JPA 和 JSF 保留连接表

java - 使用纯 JPA 和 Spring 在 View 中打开 session - 而不是 Hibernate session

java - JPA:如何使用 OneToMany 注释将新项目添加到列表中

java - 为什么我的 bin 文件夹中有这么多 CLASS 文件?

java - 如何使用 Java 在 Windows 文件上设置 "modify"ACL