Postgresql 错误:键入;日期时间“;不存在

Postgresql 错误:键入;日期时间“;不存在,postgresql,hibernate,Postgresql,Hibernate,我正在尝试将基于hibernate的应用程序从MySQL迁移到Postgres,但日期格式似乎有问题 在我的实体中,我有 @Entity @Table( name = "APP_USERS" ) public class User { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") private int

我正在尝试将基于hibernate的应用程序从MySQL迁移到Postgres,但日期格式似乎有问题

在我的实体中,我有

@Entity
@Table( name = "APP_USERS" )
public class User {

    @Id
    @GeneratedValue(generator="increment")
    @GenericGenerator(name="increment", strategy = "increment")
    private int id;

    private String username;
    private String email;
    private String password;
    private String firstname;
    private String lastname;
    private Timestamp joindate;
    ...
但是我在创建表时出错

ERROR: type "datetime" does not exist
来自“showsql”的sql是

我已经在本地安装了postgresql-9.5.3-1,并且正在使用Hibernate版本5.0.10.Final


在谷歌上搜索这个错误,结果很少。

PostgreSQL没有日期时间数据类型。对于两者的组合,您需要“没有时区的时间戳”

现在我明白了

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
org.hibernate.dialogue.mysqldialogue
而不是

<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
org.hibernate.dialent.PostgreSqlDialent

您的框架需要生成使用“时间戳”而不是“日期时间”的DDL


当任何应用程序框架为SQL DDL生成错误的数据类型时,最可能的问题是它被配置为使用错误的数据库。在您的情况下,它可能仍然配置为使用MySQL。为PostgreSQL重新配置。

好的,你知道我应该在Hibernate中使用哪个类和/或注释来告诉它不要使用
datetime
,而是使用
timestamp
?等等,现在我看到我有
org.Hibernate.dialogue.mysqldialogue
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>