1. 问题描述

JPA 无法自动创建表。

2. 解决方法

Spring Boot 和 JPA 版本均为 2.4.0

  1. 引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  1. 实体类添加注解@Entity
  1. application.properties 配置
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true

一般到这里就可以自动创建表了,但是还是没有自动创建,原因如下。

问题的原因是自增ID导致的,去除 @GeneratedValue(strategy = GenerationType.IDENTITY) 即可自动创建

package com.xiaor.rss.model;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.util.Date;

/**
 * 公共字段
 */
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@EntityListeners(AuditingEntityListener.class)  //自动更新时间字段
@Data   //生成Getter和Setter
@NoArgsConstructor  //生成无参构造函数
@AllArgsConstructor //生成有参构造函数
@ApiModel("Common--公共表")   //用于Swagger展示
public class Common {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)// id自增
    @ApiModelProperty("ID")   //用于Swagger展示
    private Integer id;
    @CreatedDate
    @Column(columnDefinition = "datetime comment '创建时间'")
    private Date create_time;
    @CreatedDate
    @Column(columnDefinition = "datetime comment '更新时间'")
    private Date update_time;
    @Column(columnDefinition = "tinyint(1) default 0 comment '逻辑删除'")
    private Boolean is_delete;
}

修改

@Id
@ApiModelProperty("ID")   //用于Swagger展示
private Long id;