我有 Spring Boot 3.2 和 H2 用于开发。 H2 正在创建一些表,但不是全部。
我最初使用 MySQL 数据库开发我的项目 - 但后来在 Spring Boot 中创建了一个新的开发配置文件,并将 mem 中的数据库更改为 H2。
正是在这一点上,一些实体没有获得在H2数据库中创建的表。
例如:
健康检查
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Data
@JsonIgnoreProperties({"hibernateLazyInitalizer", "handler"})
@SequenceGenerator(name = "health_check_seq", sequenceName = "HEALTH_CHECK_SEQ", initialValue = 100, allocationSize = 50)
@Table(name = "health_check")
public class HealthCheck {
@Id
@GeneratedValue(strategy = SEQUENCE, generator = "health_check_seq")
private Long id;
@JsonManagedReference
@ManyToOne(fetch = FetchType.EAGER, optional = false)
private Bird bird;
@JsonManagedReference
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "healthCheck")
private List<Task> tasks;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime catchDateTime;
@JsonBackReference
private Point<G2D> location;
@ManyToOne
@JoinColumn(name = "holder_id")
private User holder;
我尝试在 datadev.sql 中插入数据,但失败,因为
HEALTH_CHECK
表不存在。
如何让H2为所有实体创建表?
根据您提供的资源,您的代码似乎是正确的。我认为问题可能出在 application.properties 文件中。请确保您设置了以下属性:“
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update