hibernate不会创建表postgresql

时间:2017-06-13 13:43:48

标签: postgresql hibernate spring-boot

我知道这里有很多类似的问题,但我整天都没有找到解决方案。

我在Spring Boot 1.5.4项目中使用Hibernate 5.0.12和PostgreSQL 9.6.3。

我有一个简单的用户实体:

import javax.persistence.*;

@Entity
public class User {

    @Id
    @GeneratedValue
    @Column(nullable = false, updatable = false)
    private Long id;

    private String email;
    private String password;

    public Long getId() {       return id;  }
    public void setId(Long id)  {       this.id = id;   }
    public String getEmail() {      return email;   }
    public void setEmail(String email) {        this.email = email; }
    public String getPassword() {       return password;    }
    public void setPassword(String password) {      this.password = password; }
}

和application.properties:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/my-db
spring.datasource.username=postgres
spring.datasource.password=postgres

spring.hibernate.dialect=org.hibernate.dialect.PostgreSQL94Dialect
spring.hibernate.hbm2ddl.auto=create

logging.level.org.hibernate=DEBUG

启动看起来很正常

hibernate logs

但尚未创建表“user”。

使用MySQL一切正常。 PostgreSQL有什么问题吗?我是新手,只是像这样创建了DB:

createdb -h localhost -p 5432 -U postgres my-db password *********

并且,在尝试修复问题之后,在其中创建了架构:

CREATE SCHEMA "my-db" AUTHORIZATION postgres;

2 个答案:

答案 0 :(得分:5)

user是PostgreSQL中的保留字。使用不同的表名称,例如users,并将@Table(name = "users")注释放在实体类的顶部。

答案 1 :(得分:-1)

根据您的上述代码,您似乎缺少@Table(name =“user”)注释。如果可行的话,请在添加后尝试一次吗?