gpt4 book ai didi

java - 无法向 Spring Boot Hibernate JPA 中的现有表添加其他列

转载 作者:行者123 更新时间:2023-12-04 01:41:16 24 4
gpt4 key购买 nike

一段时间以来,我一直在尝试修改我的架构;通过在 SpringBoot 中更改模型定义。

我还有 commndLineRunner 它将用一些示例数据填充表。由于某种原因,我无法将列添加到现有表中。

我确实执行了一个大多数时候都不合理和不实用的alter table命令;(这一次解决了问题;但我不想再诉诸于这个了)。

我觉得这更多地与 SpringBoot MicroService 中 JPA 属性的定义有关。这看起来像这样:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.hikari.maximum-pool-size=30
spring.jpa.show-sql = true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update

这是我在执行 SpringBoot 应用程序时看到的错误:
Hibernate: alter table if exists public.package_definition add column no_of_email_review_requests int4 not null

Error executing DDL "alter table if exists public.package_definition add column no_of_email_review_requests int4 not null" via JDBC Statement

Caused by: org.postgresql.util.PSQLException: ERROR: column "no_of_email_review_requests" contains null values

这是我试图添加到我的实体中的附加列:
    private int noOfEmailReviewRequests;

编辑共享实体类:
@Entity
@Data
public class PackageDefinition {
@Id
private String id;
private SubscriptionType type;
private int noOfSMSReviewRequests;
private int noOfFunnelPages;
private Integer noOfEmailReviewRequests;
}

编辑 :

这里似乎有 2 个问题,但都对应于同一个表和列的添加/修改。我已重命名表中的以下列已重命名:
no_review_requests to no_of_sms_review_requests --> this is throwing an error 

并添加了以下列:
private Integer noOfEmailReviewRequests;

最佳答案

您必须为现有行设置非空 columnt 的默认值。

为此,请使用列定义

@Column(columnDefinition="COLUMN_TYPE default '0'")

其中 COLUMN_TYPE 是您选择的列的 SQL 类型。

或( hibernate 依赖)
@ColumnDefault(0)

https://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/annotations/ColumnDefault.html

关于java - 无法向 Spring Boot Hibernate JPA 中的现有表添加其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57307298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com