我正在使用Hibernate JPA创建一些简单的Spring Boot项目。
我创建了一些数据模型,该模型现在包含5个表,并创建了反映表的实体。我已经设置了spring.jpa.generate-ddl=true
,并且我的实体正确地反映在PostgreSQL中创建的架构中。
下一步是开始添加关系。
我假定的数据模型的一部分是(与我的UML相对)
非常简单的一对多关系。
我的实体看起来是这样的(下面省略了getter和setter,存在于代码中):
@Entity
public class AppUser {
@Id
@GeneratedValue
private long id;
private String name;
private String secondName;
private String email;
private java.util.Date joinDate;
@ManyToOne
@JoinColumn(name = "user_role_id")
private UserRole userRole;
}
@Entity
public class UserRole {
@Id
@GeneratedValue
private long id;
private String roleName;
}
我使用spring.jpa.generate-ddl=true
启动应用程序,并在user_role_id
表中创建了列AppUser
,但是应用程序由于错误而无法启动:
2018-10-11 19:41:35.435 INFO 45564 --- [ main] org.hibernate.tool.hbm2ddl.SchemaUpdate : HHH000228: Running hbm2ddl schema update
2018-10-11 19:41:35.466 WARN 45564 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42703
2018-10-11 19:41:35.466 ERROR 45564 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: column t1.tgconstrname does not exist
有完整的堆栈跟踪(请告知是否应将其粘贴在此处而不是pastebin: https://pastebin.com/x4qNJkK9
设置spring.jpa.generate-ddl=false
时,应用程序成功启动。
任何想法为什么会发生这种情况?