错误:类型“datetime”不存在

时间:2016-08-08 10:26:02

标签: postgresql hibernate

我正在尝试将基于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是

Hibernate: create table APP_USERS (id integer not null, email varchar(255), firstname varchar(255), joindate datetime, lastname varchar(255), password varchar(255), username varchar(255), primary key (id))

我在本地安装了postgresql-9.5.3-1,我使用的是Hibernate版本5.0.10.Final

在Google上搜索该错误的结果很少。

3 个答案:

答案 0 :(得分:7)

Google搜索" postgresql datetime"的最佳结果本来会把你带到PostgreSQL的日期和时间数据类型的文档。从该页面可以明显看出,您的框架需要生成使用" timestamp"而不是" datetime"。

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

答案 1 :(得分:1)

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

https://www.postgresql.org/docs/9.5/static/datatype-datetime.html

答案 2 :(得分:0)

现在我看到我有

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

而不是

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