Hibernate保存對象報錯ORA-00904:如何解決“PAY_TYPE_CODE”無效標識符問題?

Hibernate保存對象報錯ORA-00904:如何解決“PAY_TYPE_CODE”無效標識符問題?

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

解決方法

  1. 檢查數據庫表結構: 確認pay_type_code字段在數據庫表中是否使用了雙引號。如果使用了,請務必在后續的sql語句和Hibernate映射中保持一致。

  2. 使用@column注解: 在Hibernate實體類中,使用@Column注解,并用雙引號包裹屬性名:

@Column(name = ""pay_type_code"") private String payTypeCode;
  1. 調整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
喜歡就支持一下吧
點贊6 分享