課程
/后端開發
/Java
/2小時學會Spring Boot
自動創建表時,多了一張表hibernate_sequence,為什么?
2018-06-22
源自:2小時學會Spring Boot 5-1
正在回答
這里要指定主鍵自增策略,默認是以Oracle的方式來實現自增主鍵。想用mysql的自增方式需要改為@GeneratedValue(strategy?=?GenerationType.IDENTITY)
改為@GeneratedValue(strategy?=?GenerationType.IDENTITY)
慕前端0227587 提問者
從網上復制下來的
------------------------這是一條分割線---------------------------
環境:@GeneratedValue(strategy = GenerationType.AUTO),數據庫用的mysql
問題:
1.發現數據庫保存的時候會生成hibernate_sequence表,用來記錄其他表的主鍵。若刪除該表,將報錯could not read a hi value - you need to populate the table: hibernate_sequence。
2.服務器重啟時主鍵從1開始記錄,由于數據庫里有主鍵為1的數據,于是會報主鍵重復的錯誤。
解決方法:
將@GeneratedValue(strategy = GenerationType.AUTO)改為@GeneratedValue(strategy = GenerationType.IDENTITY)?。
原因:
@GeneratedValue(strategy = GenerationType.AUTO)主鍵增長方式由數據庫自動選擇,當數據庫選擇sequence方式時,出現如上錯誤。
@GeneratedValue(strategy = GenerationType.IDENTITY)?要求數據庫選擇自增方式,oracle不支持此種方式。
@GeneratedValue(strategy = GenerationType.SEQUENCE)采用數據庫提供的sequence機制生成主鍵。mysql不支持此種方式。
@GeneratedValue(strategy = GenerationType.TABLE)沒太看懂怎么存儲的。
-------------------------以上就是我覺得大概能解決的方案了-------------------
//Girl類 package?com.han.girl; import?javax.persistence.Entity; import?javax.persistence.GeneratedValue; import?javax.persistence.Id; @Entity public?class?Girl?{ ????private?int?id; ????private?String?cupSize; ????private?int?age; ????public?Girl()?{ ????} ????@Id ????@GeneratedValue ????public?int?getId()?{ ????????return?id; ????} ????public?void?setId(int?id)?{ ????????this.id?=?id; ????} ????public?String?getCupSize()?{ ????????return?cupSize; ????} ????public?void?setCupSize(String?cupSize)?{ ????????this.cupSize?=?cupSize; ????} ????public?int?getAge()?{ ????????return?age; ????} ????public?void?setAge(int?age)?{ ????????this.age?=?age; ????} } //application.yml spring: ??profiles: ????active:?dev ??datasource: ????driver-class-name:?com.mysql.jdbc.Driver ????url:?jdbc:mysql://127.0.0.1:3306/springboot ????username:?root ????password:?1234 ??jpa: ????hibernate: ??????ddl-auto:?create ????show-sql:?true
這是我的代碼
能看一下你的代碼嗎?
舉報
Spring Boot入門視頻教程,你將學會使用Spring Boot快速構建應用程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-06-23
這里要指定主鍵自增策略,默認是以Oracle的方式來實現自增主鍵。想用mysql的自增方式需要
改為@GeneratedValue(strategy?=?GenerationType.IDENTITY)
2018-06-27
從網上復制下來的
------------------------這是一條分割線---------------------------
環境:@GeneratedValue(strategy = GenerationType.AUTO),數據庫用的mysql
問題:
1.發現數據庫保存的時候會生成hibernate_sequence表,用來記錄其他表的主鍵。若刪除該表,將報錯could not read a hi value - you need to populate the table: hibernate_sequence。
2.服務器重啟時主鍵從1開始記錄,由于數據庫里有主鍵為1的數據,于是會報主鍵重復的錯誤。
解決方法:
將@GeneratedValue(strategy = GenerationType.AUTO)改為@GeneratedValue(strategy = GenerationType.IDENTITY)?。
原因:
@GeneratedValue(strategy = GenerationType.AUTO)主鍵增長方式由數據庫自動選擇,當數據庫選擇sequence方式時,出現如上錯誤。
@GeneratedValue(strategy = GenerationType.IDENTITY)?要求數據庫選擇自增方式,oracle不支持此種方式。
@GeneratedValue(strategy = GenerationType.SEQUENCE)采用數據庫提供的sequence機制生成主鍵。mysql不支持此種方式。
@GeneratedValue(strategy = GenerationType.TABLE)沒太看懂怎么存儲的。
-------------------------以上就是我覺得大概能解決的方案了-------------------
2018-06-23
這是我的代碼
2018-06-22
能看一下你的代碼嗎?