0
我是一位不幸的開發人員,需要使用非常遺留的數據庫。問題是,該數據庫包含自定義數據類型:Hibernate JPA DB2自定義數據類型
CREATE DISTINCT TYPE SCHEMA.T_STUPID_ID AS
SMALLINT WITH COMPARISONS
;
所以我不能改變的,但需要得到的數據和查詢。
DB2 SQL Error: SQLCODE=-401, SQLSTATE=42818, SQLERRMC==, DRIVER=4.19.26
是:一個操作的操作數的數據類型並不看來,這是行不通的,使用彈簧數據JPA(資料庫),我收到以下錯誤引起的ID(findOne)查詢時兼容 所以它聽起來像查詢不使用自定義類型的工作:/
我也試過這樣:
@Query("select p from ImSickOfThisEntity p where cast(p.entityId as integer)
= ?1 ")
但我得到:
DB2 SQL Error: SQLCODE=-461, SQLSTATE=42846, SQLERRMC=IPSDBO.T_PRODUCT_ID;SYSIBM.INTEGER
翻譯爲:
A VALUE WITH DATA TYPE source-data-type CANNOT BE CAST TO TYPE target-data-type
如何處理這樣的自定義類型?谷歌沒有幫助,我只能找到具有標準數據庫列類型的自定義Java類型....
因此,如果我使用@Type註釋,SmallIntHibernateType的目的是什麼?它是spring-data-jpa存儲庫中的where子句參數嗎? – maslan
SmallIntHybernateType類實際上是告訴hibernate該列是什麼SQL類型並將其轉換爲Java類型的工作。 @Type註釋是hibernate查找自定義列類型的要點。 – Mamof
好吧,那沒用,即使沒有這個,數據檢索也沒有問題。查詢存在問題 - where子句不起作用,因爲DB2聲明它是一種錯誤的類型。我使用的唯一解決方案是在SpringDataJPA存儲庫中使用強制轉換的本地查詢 – maslan