亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Hibernate允許ID = 0

使用Hibernate允許ID = 0

米琪卡哇伊 2021-05-05 13:53:01
我正在使用帶有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;

}


查看完整回答
反對 回復 2021-05-19
?
繁花如伊

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)


查看完整回答
反對 回復 2021-05-19
  • 2 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號