2011-05-23 80 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