休眠注释关系不适用于spring.jpa.generate-ddl = true

时间:2018-10-11 17:48:17

标签: java spring hibernate spring-boot jpa

我正在使用Hibernate JPA创建一些简单的Spring Boot项目。 我创建了一些数据模型,该模型现在包含5个表,并创建了反映表的实体。我已经设置了spring.jpa.generate-ddl=true,并且我的实体正确地反映在PostgreSQL中创建的架构中。

下一步是开始添加关系。

我假定的数据模型的一部分是(与我的UML相对)

enter image description here

非常简单的一对多关系。

我的实体看起来是这样的(下面省略了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时,应用程序成功启动。

任何想法为什么会发生这种情况?

0 个答案:

没有答案