我正在尝试将基于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上搜索该错误的结果很少。
答案 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>