[英]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.