错误:类型“datetime”不存在。

18

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

20

你的框架需要生成使用“timestamp”而不是“datetime”的DDL。

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


5

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

0

现在我明白了我所犯的错误

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

替代

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

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