簡體   English   中英

休眠/SQLException:字段沒有默認值

[英]Hibernate / SQLException: field doesn't have default value

使用以下方法生成的 mySQL 表:

CREATE TABLE `actors` (
    `actorID` INT(11) NOT NULL,
    `actorName` VARCHAR(255) NOT NULL,
     PRIMARY KEY AUTO_INCREMENT (actorID)
);

映射類:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "actorID", length = 11, unique = true, nullable = false)
private int actorID;
....

錯誤:

ERROR: Field 'actorID' doesn't have a default value

嘗試創建新的 Actor 對象並將其保存到數據庫時會發生此錯誤。

根據類似問題的答案,我嘗試使用其他生成策略,並刪除/重建表/整個數據庫。 到目前為止沒有運氣。

謝謝你的時間,塞繆爾史密斯

編輯:刪除表並使用shippi 顯示的SQL 語法重新創建它似乎解決了我的問題。

嘗試使用

@GeneratedValue(strategy=GenerationType.AUTO)
@Id
@Column(name = "actorID")
private int actorID;

這應該可以解決您的問題。 如果保存,則將 actorID 留空。

還要確保數據庫工作正常,嘗試在不插入 ID 的情況下編寫插入語句,然后讓我們看看純插入是否正常工作。 如果直接插入對數據庫起作用,您可以開始對休眠進行故障排除。

還有一點,我用來在定義列的同一行中定義 PH 和自動增量:

actorID INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

但它應該以任何一種方式工作。

您的錯誤在您的表定義中。

必須是:

CREATE TABLE `actors` (
   `actorID` INT(11) NOT NULL AUTO_INCREMENT,
   `actorName` VARCHAR(255) NOT NULL,
   PRIMARY KEY AUTO_INCREMENT (actorID)
);

您錯過了 actorID 中的 AUTO_INCREMENT。

我遇到了同樣的問題,解決了它清空整個數據庫以清空並重新運行應用程序。 一切都不好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM