我正在我的Spring Boot應用程式中創建一個新的資料庫表,但問題是,盡管配置正確,也沒有日志錯誤資訊,但該表沒有在資料庫中被創建。以下是我的模型類:
@Entity
@Table(name="user_avatar"/span>)
public class UserAvatar {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_avatar_id"/span>)
private String userAvatarId;
@OneToOne
@JoinColumn(name="user_id")
私有用戶user。
@Column(name="random_string")
私有的String randomString。
@Column(name="style_options")
私人字串styleOptions。
@Column(name="avatar_type")
private String avatarType;
...
這是我的application.properties檔案:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://${DB_HOST}/${DB_NAME}? createDatabaseIfNotExist=true&autoReconnect=true&allowPublicKeyRetrieval=true& useSSL=false&useUnicode=yes& characterEncoding=UTF-8&characterSetResults=UTF-8。
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}。
spring.jpa.show-sql=true。
spring.jpa.generate-ddl=true。
spring.jpa.hibernate.ddl-auto=create
server.tomcat.uri-encoding=UTF-8。
spring.data.jpa.repositories.bootstrap-mode = default
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.connection.characterEncoding=utf-8。
spring.jpa.properties.hibernate.connection.CharSet=utf-8。
spring.jpa.properties.hibernate.connection.useUnicode=true
而我的控制臺日志,縮短了顯示Hibernate的create查詢:
Hibernate: 創建表 student_storybook (student_storybook_id integer not null auto_increment, is_quiz_completed tinyint(1) default 0, is_story_completed tinyint(1) default 0, by_student_id integer, for_storybook_id integer, in_progress_quiz_session integer, in_progress_story_session integer, primary key (student_storybook_id)) engine=InnoDB
2021-09-11 09:43:20.561 DEBUG 5684 -- [ main] org.hibernate. SQL : 創建表teacher (teacher_id integer not null auto_increment, name varchar(255), user_id integer, primary key (teacher_id)) engine=InnoDB
Hibernate。創建表teacher (teacher_id integer not null auto_increment, name varchar(255), user_id integer, primary key (teacher_id)) engine=InnoDB
2021-09-11 09:43:20.575 DEBUG 5684 -- [ main] org.hibernate. SQL : 創建表 user (id integer not null auto_increment, avatar_data TEXT, avatar_type integer, email varchar(255) 。性別 varchar(255)。password varchar(255)。reset_password_token varchar(255)。role varchar(255)。username varchar(255), user_avatar_id integer, primary key (id)) engine=InnoDB
Hibernate。創建表user (id integer not null auto_increment, avatar_data TEXT, avatar_type integer, email varchar(255) /span>。性別 varchar(255)。password varchar(255)。reset_password_token varchar(255)。role varchar(255)。username varchar(255), user_avatar_id integer, primary key (id)) engine=InnoDB
2021-09-11 09:43:20.595 DEBUG 5684 -- [ main] org.hibernate. SQL : 創建表 user_avatar (user_avatar_id varchar(255) not null auto_increment, avatar_type varchar(255)。random_string varchar(255)。style_options varchar(255)。user_id整數,主鍵 (user_avatar_id)) engine=InnoDB
Hibernate。創建表user_avatar (user_avatar_id varchar(255) not null auto_increment, avatar_type varchar(255)。random_string varchar(255)。style_options varchar(255)。user_id整數,主鍵 (user_avatar_id)) engine=InnoDB
正如你所看到的,盡管Hibernate的create查詢被執行,但所需的user_avatar表沒有在資料庫中被創建:
為什么會這樣?
為什么會這樣,我怎樣才能解決這個問題呢?
uj5u.com熱心網友回復:
結果發現這是因為一個非常微不足道的錯誤:我把UserAvatar類的主鍵設為String,而它應該是一個int型別:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_avatar_id"/span>)
private int userAvatarId;
經過這一改動,表被成功創建。
另外,盡管在application.properties檔案中進行了以下設定,但Hibernate控制臺的日志并沒有顯示詳細說明為什么沒有創建表的錯誤資訊:
DEBUG = true
logging.level.org.springframework.web= DEBUG
logging.level.org.hibernate= ERROR
但這是另一個帖子的問題 :)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/327149.html
標籤:
上一篇:ManyToOne雙重選擇冬眠

