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

為了賬號安全,請及時綁定郵箱和手機立即綁定

自動創建表時,多了一張表hibernate_sequence,為什么?

自動創建表時,多了一張表hibernate_sequence,為什么?

正在回答

4 回答

這里要指定主鍵自增策略,默認是以Oracle的方式來實現自增主鍵。想用mysql的自增方式需要改為@GeneratedValue(strategy?=?GenerationType.IDENTITY)

4 回復 有任何疑惑可以回復我~
#1

慕前端0227587 提問者

非常感謝!
2018-07-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)沒太看懂怎么存儲的。

-------------------------以上就是我覺得大概能解決的方案了-------------------

2 回復 有任何疑惑可以回復我~
//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

這是我的代碼

1 回復 有任何疑惑可以回復我~

能看一下你的代碼嗎?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
2小時學會Spring Boot
  • 參與學習       151526    人
  • 解答問題       1132    個

Spring Boot入門視頻教程,你將學會使用Spring Boot快速構建應用程序

進入課程

自動創建表時,多了一張表hibernate_sequence,為什么?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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