Spring Boot & Hibernate 无法在实体自引用时自动创建表



我正在使用spring-bootHibernate,并且我有以下实体

@Entity
public class SystemicLevel {
@Id
private Long id;
@Column
private String name;
@Column
private String detail;
@OneToOne
@JoinColumn(name="previous_Level")
private SystemicLevel previousSystemicLevel;

}

application.properties文件中,我将spring.jpa.hibernate.ddl auto属性设置为"创建">所以当我运行应用程序时,我会收到以下错误:

org.hibernate.tool.schema.spi.CommandAcceptanceException:错误执行DDL";更改表系统级别添加约束FKehejw8ac9k3req7redt7ef4uv外键(previous_level(引用systemic_level(id(";通过JDBC语句

我认为,当Hibernate试图创建systemic_level表时,它试图使用previous_level自引用该表,但该表尚未创建,因此抛出异常。

我想知道这个问题是否有解决办法。

使用

@OneToOne
@JoinColumn(name="previous_Level", nullable = true)
private SystemicLevel previousSystemicLevel;

更新属性

spring.jpa.hibernate.ddl-auto=update

如果仍然存在问题,请使用下面的属性来跟踪jdbc中执行查询的情况,这样您就可以轻松地跟踪sql执行查询日志,并根据这些更改进行跟踪。

logging.level.org.hibernate.SQL= DEBUG
spring.jpa.properties.hibernate.format_sql=true

最新更新