我正在使用帶有Springboot 1.5.14的休眠5.0.12。我的實體有這個編號@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name = "UserID", nullable = true)public int getUserId() { return this.userId;}public void setUserId(int userId) { this.userId = userId;}在我的數據庫中有的禮物記錄id = 0。如果我閱讀,編輯并保存了這些記錄,休眠將使用生成的新ID復制這些記錄。如何配置休眠以允許id = 0值?在eclispelink中,此配置為 "eclipselink.id-validation" = "NULL"
2 回答

慕娘9325324
TA貢獻1783條經驗 獲得超4個贊
解決方案是將主鍵類型聲明為Integer而不是int。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "UserID", nullable = true)
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}

繁花如伊
TA貢獻2012條經驗 獲得超12個贊
這個問題應該與數據庫有關,因為即使您為Long / Int主鍵顯式設置了零值(由于大多數數據庫中設置默認設置的方式),通常也是由數據庫“糾正”您的輸入。
即在MySQL的情況下,可以明確地設置ID零(0),但數據庫仍然會忽略它,除非你IE添加/設置NO_AUTO_VALUE_ON_ZERO
你的sql_mode
。如果是MySQL / MariaDB,可以直接在my.cnf
文件中進行更改,如果您不想重置數據庫,則需要通過以下方式進行設置set global sql_mode='NO_AUTO_VALUE_ON_ZERO'
我認為這個答案很重要,因為您利用了 @GeneratedValue(strategy=GenerationType.IDENTITY)
添加回答
舉報
0/150
提交
取消