我有一個 Spring Boot User 類,它總是出現錯誤“java.sql.SQLException:欄位'id'沒有默認值”。我曾多次嘗試在 Java 類和資料庫表中提供默認值,但無濟于事。而且我也從生成型別=自動和=身份切換,但無濟于事。非常感謝您的幫助。這是我的 Java 類和我的資料庫表:
package com.ykirby.myfbapp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.springframework.beans.factory.annotation.Value;
import java.sql.Timestamp;
import java.util.Date;
@Entity // This tells Hibernate to make a table out of this class
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Value("#{User.id ?: 0}")
private int id = 12345;
@Column(name = "fbuserid")
private String fbuserid;
@Column(name = "apttime")
@Temporal(TemporalType.TIMESTAMP)
private Date apttime;
@Column(name = "apttitle")
private String apttitle;
@Column(name = "aptaddress")
private String aptaddress;
@Column(name = "aptlonglat")
private String aptlonglat;
@Column(name = "aptdetails")
private String aptdetails;
public String getFbuserid() {
return fbuserid;
}
public void setFbuserid(String fbuserid) {
this.fbuserid = fbuserid;
}
public Date getApttime() {
return apttime;
}
public void setApttime(Date apttime) {
this.apttime = apttime;
}
public String getApttitle() {
return apttitle;
}
public void setApttitle(String apttitle) {
this.apttitle = apttitle;
}
public String getAptaddress() {
return aptaddress;
}
public void setAptaddress(String aptaddress) {
this.aptaddress = aptaddress;
}
public String getAptlonglat() {
return aptlonglat;
}
public void setAptlonglat(String aptlonglat) {
this.aptlonglat = aptlonglat;
}
public String getAptdetails() {
return aptdetails;
}
public void setAptdetails(String aptdetails) {
this.aptdetails = aptdetails;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}

uj5u.com熱心網友回復:
您的User物體類中的更改有時可能無法準確反映您的資料庫架構。您可以嘗試以下解決方案之一:
1. 通過添加 AUTO_INCREMENT 屬性手動更新您的資料庫架構
ALTER TABLE `user` CHANGE COLUMN `id` `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT;
2. 洗掉資料庫中的用戶表,然后重新運行應用程式
確保將spring.jpa.hibernate.ddl-auto其設定為create或update。默認情況下,none如果您不使用 H2 資料庫等嵌入式/記憶體資料庫。
Spring Data JPA 的這種配置會將 Hibernatehibernate.hbm2ddl.auto設定為設定值。在我們的例子中,它是createor update。
您可以在以下文章和檔案中了解更多相關資訊。
Spring Boot 參考 - 資料庫初始化
Hibernate hbm2ddl.auto 配置的可能值是什么,它們的作用是什么
在生產中,我建議你不要使用這個選項,而是使用類似于資料庫遷移工具Liquibase或遷徙路線和離開spring.jpa.hibernate.ddl-auto配置是none。
有關此Hibernate 的更多資訊:hbm2ddl.auto=update in production?
uj5u.com熱心網友回復:
您應該洗掉現有資料庫并重新生成它,因為有時通過模型完成的更改無法正確反映在資料庫中。在重新生成資料庫時,您可以使用 SchemaExport 構建它。
uj5u.com熱心網友回復:
做
@Column(name = "apttitle")
private String apttitle="default";
作業?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/409414.html
標籤:
