hibernate保存數據時報錯ORA-00904:”pay_type_code”無效標識符的解決方案
許多開發者在使用Hibernate保存對象時遇到”ORA-00904: “pay_type_code”: 無效標識符”錯誤。 問題看似簡單,但根源在于數據庫表結構與Hibernate實體類映射的細微差異。
根本原因通常是數據庫表創建時使用了雙引號。如果在創建表時為字段名加了雙引號,例如:
CREATE TABLE test ( "id" VARCHAR2(1000) );
那么后續的sql語句也必須使用雙引號:
SELECT "id" FROM test;
否則就會導致ORA-00904錯誤:
SELECT id FROM test; -- ORA-00904: "id": invalid identifier
解決方法:
-
檢查數據庫表結構: 確認pay_type_code字段在數據庫表中是否使用了雙引號。如果使用了,請務必在后續的sql語句和Hibernate映射中保持一致。
-
使用@column注解: 在Hibernate實體類中,使用@Column注解,并用雙引號包裹屬性名:
@Column(name = ""pay_type_code"") private String payTypeCode;
- 調整Hibernate命名策略 (可選): 如果你的項目使用了spring Data JPA,可以嘗試修改Hibernate的命名策略,強制使用實體類中的屬性名:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
這會讓Hibernate忽略數據庫表中的字段名大小寫和引號,直接使用實體類屬性名進行映射。 但是,這可能會導致其他問題,建議優先嘗試方法1和2。
通過以上步驟,就能有效解決ORA-00904錯誤,順利保存對象到數據庫。 記住,保持數據庫表結構和Hibernate實體類映射的一致性至關重要。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END