2011-05-23 138 views
0

我正在嘗試執行本機查詢並傳遞運行時參數並以列表形式獲取結果。當我嘗試處理Object []時,所提取的列之一是一個String。但它出現爲java.lang.Character而不是String。以下是下面的查詢:JPA本機查詢

SELECT CASE 
     WHEN (TRUNC(abm.credit_card_expiration_date) BETWEEN trunc(SYSDATE) AND 
       trunc(last_day(SYSDATE))) THEN 
      'Expires' 
     ELSE 
      'Expired' 
     END EXP_STATUS, 
     TO_CHAR(abm.credit_card_expiration_date, 'MM/YY') EXP_DATE 
    FROM account_billing_methods abm 
WHERE abm.account_id = 201103 
    AND abm.billing_type_id = 1 
    AND TRUNC(abm.credit_card_expiration_date) <= TRUNC(LAST_DAY(SYSDATE)) 

由於EXP_STATUS列的類型爲Character,因此無法將其轉換爲String類型。任何想法爲什麼它不工作?

問候, -Anand

+0

它是'Character'還是'Character []'? – 2011-05-23 17:46:18

+0

甚至String.valueOf(Obj [0])僅導致獲取的柱的第一個字符,即'E' – Anand 2011-05-23 17:47:04

+0

getClass.getName()表示它的類型爲java.lang.Character – Anand 2011-05-23 17:47:37

回答

1

我有同樣的問題,改變了我的查詢的選擇子句: EXP_STATUS || '' as EXP_STATUS

然後,它是一個VARCHAR而不是CHAR和JPA將返回它作爲一個字符串而不是字符。

如果有人知道更好/更優雅的解決方案,我將不勝感激,如果你能分享它。

+0

工作就像一個魅力 – 2016-07-06 18:41:24