簡體   English   中英

Spring 進口 SQL 與 Hibernate

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM