java Spring-JPA的ddl-auto

qoefvg9y  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(97)

在使用Spring-JPA的ddl-auto创建数据库表时,有些实体被创建为表,而有些表没有被创建
Spring-JPA实体(2):enter image description here
application.properties

spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.open-in-view=false

由Spring-jpa enter image description here创建的表
有两个实体,所以我认为应该创建两个表,但只有一个表名为:tbl_app_block
1.我添加了@EntityScan(basePackages = {“com.example.demo.entity.**"})
1.我通过IDEA数据库enter image description here生成实体
实体1

@Entity
@Table(name = "tbl_app_auth", schema = "hoe_common", catalog = "")
public class TblAppAuthEntity {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @Column(name = "app_id", nullable = false, length = 50)
    private String appId;
    @Basic
    @Column(name = "app_secret", nullable = true, length = 100)
    private String appSecret;
    @Basic
    @Column(name = "app_name", nullable = true, length = 100)
    private String appName;
    @Basic
    @Column(name = "app_token", nullable = true, length = 100)
    private String appToken;
    @Basic
    @Column(name = "create_time", nullable = true)
    private Timestamp createTime;
    @Basic
    @Column(name = "update_time", nullable = true)
    private Timestamp updateTime;

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getAppSecret() {
        return appSecret;
    }

    public void setAppSecret(String appSecret) {
        this.appSecret = appSecret;
    }

    public String getAppName() {
        return appName;
    }

    public void setAppName(String appName) {
        this.appName = appName;
    }

    public String getAppToken() {
        return appToken;
    }

    public void setAppToken(String appToken) {
        this.appToken = appToken;
    }

    public Timestamp getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Timestamp createTime) {
        this.createTime = createTime;
    }

    public Timestamp getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Timestamp updateTime) {
        this.updateTime = updateTime;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        TblAppAuthEntity that = (TblAppAuthEntity) o;
        return Objects.equals(appId, that.appId) && Objects.equals(appSecret, that.appSecret) && Objects.equals(appName, that.appName) && Objects.equals(appToken, that.appToken) && Objects.equals(createTime, that.createTime) && Objects.equals(updateTime, that.updateTime);
    }

    @Override
    public int hashCode() {
        return Objects.hash(appId, appSecret, appName, appToken, createTime, updateTime);
    }
}

实体2

@Entity
@Table(name = "tbl_app_block", schema = "hoe_common", catalog = "")
public class TblAppBlockEntity {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @Column(name = "block_id", nullable = false)
    private int blockId;
    @Basic
    @Column(name = "block_code", nullable = true, length = 20)
    private String blockCode;
    @Basic
    @Column(name = "block_name", nullable = true, length = 20)
    private String blockName;
    @Basic
    @Column(name = "block_index", nullable = true)
    private Integer blockIndex;
    @Basic
    @Column(name = "cross_num", nullable = true)
    private Integer crossNum;
    @Basic
    @Column(name = "create_time", nullable = true)
    private Timestamp createTime;
    @Basic
    @Column(name = "is_deleted", nullable = true)
    private Byte isDeleted;
    @Basic
    @Column(name = "sync_block_id", nullable = true)
    private Integer syncBlockId;

    public int getBlockId() {
        return blockId;
    }

    public void setBlockId(int blockId) {
        this.blockId = blockId;
    }

    public String getBlockCode() {
        return blockCode;
    }

    public void setBlockCode(String blockCode) {
        this.blockCode = blockCode;
    }

    public String getBlockName() {
        return blockName;
    }

    public void setBlockName(String blockName) {
        this.blockName = blockName;
    }

    public Integer getBlockIndex() {
        return blockIndex;
    }

    public void setBlockIndex(Integer blockIndex) {
        this.blockIndex = blockIndex;
    }

    public Integer getCrossNum() {
        return crossNum;
    }

    public void setCrossNum(Integer crossNum) {
        this.crossNum = crossNum;
    }

    public Timestamp getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Timestamp createTime) {
        this.createTime = createTime;
    }

    public Byte getIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(Byte isDeleted) {
        this.isDeleted = isDeleted;
    }

    public Integer getSyncBlockId() {
        return syncBlockId;
    }

    public void setSyncBlockId(Integer syncBlockId) {
        this.syncBlockId = syncBlockId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        TblAppBlockEntity that = (TblAppBlockEntity) o;
        return blockId == that.blockId && Objects.equals(blockCode, that.blockCode) && Objects.equals(blockName, that.blockName) && Objects.equals(blockIndex, that.blockIndex) && Objects.equals(crossNum, that.crossNum) && Objects.equals(createTime, that.createTime) && Objects.equals(isDeleted, that.isDeleted) && Objects.equals(syncBlockId, that.syncBlockId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(blockId, blockCode, blockName, blockIndex, crossNum, createTime, isDeleted, syncBlockId);
    }
}
kcrjzv8t

kcrjzv8t1#

ID字段/列的类型(字符串)错误。因为它应该由数据库作为IDENTITY生成,所以它需要是Integer。像这样改变:

@Column(name = "app_id", nullable = false)
private Integer appId;

public Integer getAppId() {
    return appId;
}

public void setAppId(Integer appId) {
    this.appId = appId;
}

还应该在每个实体类中提供一个无参数构造函数。它与表创建无关,但在以后阅读数据时会成为问题。

相关问题