Postgresql 错误:键入;日期时间“;不存在
我正在尝试将基于hibernate的应用程序从MySQL迁移到Postgres,但日期格式似乎有问题 在我的实体中,我有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
@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>