[英]Spring import SQL with Hibernate
我想在運行初始 sql 文件時使用 Hibernate 。 我目前遇到的問題是我得到以下異常:我希望 HIBERNATE 插入 ID 而不是數據庫!
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
我的 application.properties 看起來像這樣:
spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
#Data Source Settings
spring.datasource.url=jdbc:mariadb://localhost:3306/kotlin
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.dbcp2.test-while-idle=true
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.continue-on-error=false
#Add Initial Date for Testing
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.hbm2ddl.import_files=data.sql
我的用戶 Model 包含:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
var id: Long = 0
我的啟動 sql 腳本:
INSERT INTO user (first_name, last_name, pass_word, user_name, version, email) VALUES ('deepak', 'sp', '$2a$10$2nU5xMCyzPMeNiGQsrjzQeWNcHf9NjtGzVFgy6kVRcZlLh/ABTgZW', 'spdeepak', 1, "example@example.com");
似乎它想直接執行 sql (不使用由 Hibernate 生成的 ID)而不是創建用戶對象然后插入數據。
在處理默認值時,我也會收到此錯誤(它說數據庫上沒有默認值)。 所以請不要只回答“使用GenerationType.IDENTITY)
嘗試這個:
INSERT INTO user (id, first_name, last_name, pass_word, user_name, version, email)
VALUES
(null, 'deepak', 'sp', '$2a$10$2nU5xMCyzPMeNiGQsrjzQeWNcHf9NjtGzVFgy6kVRcZlLh/ABTgZW', 'spdeepak', 1, "example@example.com");
您的插入語句缺少 id 列,但它是必需的。 如果您提供 null 值,則 db 將通過 usign autoincrement 自動分配其值。
關於 hibernate 為手動腳本生成 id - 這是不可能的。 手動腳本按原樣直接執行到數據庫,無需任何框架。 它是純 jdbc 語句 sql 腳本執行。
我看到您正在根據您的屬性文件使用 jpa 存儲庫。 如果您希望通過 hibernate 生成 id,那么您應該通過 jpa 存儲庫創建您的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.