我在數據庫(Derby和DB2)兩大Integer
列。我需要在JPQL
之內將它們相互分開。如何在JPQL語句中使用typcasting?
Integer
這兩列都是零,如果餘數是十進制數,例如0.25
等於0
等,並且可以理解,因爲類型是int。
在SQL
我能有這個例如
select CAST(column1 as decimal(6,2))/CAST(column2 as decimal(6,2))from Sometable;
但什麼是JPQL
等同。
一種選擇可能是(我還沒試過)是擁有在實體@Transient
方法返回小數類型,這樣計算存在並傳遞至JPQL
但我寧願讓SQL
做這項工作。
Mysql不需要在數據庫級別進行轉換。所以對於不同的RDBMS行爲是不同的,這很好。但是JPQL應該怎麼做呢,不需要使用本地查詢來知道該操作需要轉換爲十進制。
添加方言<property name="openjpa.jdbc.DBDictionary" value="derby"/>
沒有任何解決它。
請注意這是JPA1
我會期望div /運算符返回一個小數而不需要轉換,但那不會發生。也設置方言應該/應該照顧這可能是但不是這樣的情況。我也傾向於nativeQuery,但我仍然不相信它不僅是選擇。如果這真的是那種傷心。 +1。 – Shahzeb
你能否詳細說明你爲什麼期望方言自動進行鑄造? – Victor
@Kaushik因爲兩個整數的劃分根據底層數據庫產生不同的數據類型。例如,'Mysql'返回一個小數,例如將'0.25'改爲'0'的'Derby'和'DB2'整數。因此,方言必須知道行爲並提供機械,尤其是考慮到'JPQL'中沒有可用的演員選項。 – Shahzeb