我知道这里有很多类似的问题,但我整天都没有找到解决方案。
我在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
启动看起来很正常
但尚未创建表“user”。
使用MySQL一切正常。 PostgreSQL有什么问题吗?我是新手,只是像这样创建了DB:
createdb -h localhost -p 5432 -U postgres my-db password *********
并且,在尝试修复问题之后,在其中创建了架构:
CREATE SCHEMA "my-db" AUTHORIZATION postgres;
答案 0 :(得分:5)
user
是PostgreSQL中的保留字。使用不同的表名称,例如users
,并将@Table(name = "users")
注释放在实体类的顶部。
答案 1 :(得分:-1)
根据您的上述代码,您似乎缺少@Table(name =“user”)注释。如果可行的话,请在添加后尝试一次吗?