【问题标题】:JPA Native QueryJPA 原生查询
【发布时间】:2011-08-31 08:17:36
【问题描述】:

我正在尝试执行本机查询并传递运行时参数并将结果作为列表获取。当我尝试处理 Object [] 时,提取的列之一是字符串。但它以 java.lang.Character 而不是 String 的形式出现。这是下面的查询:

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 还是Character[]
  • 甚至 String.valueOf(Obj [0]) 仅导致获取的列的第一个字符,即'E'
  • getClass.getName() 说它是 java.lang.Character 类型
  • 你用的是什么 JPA 提供者,听起来像个 bug

标签: jpa nativequery


【解决方案1】:

我遇到了同样的问题,并将查询的 select 子句更改为: EXP_STATUS || '' as EXP_STATUS

那么它是一个 VARCHAR 而不是 CHAR,JPA 会将它作为字符串而不是字符返回。

如果有人知道更好/更优雅的解决方案,如果您能分享,我将不胜感激。

【讨论】:

  • 工作就像一个魅力
猜你喜欢
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2011-10-16
  • 2020-01-11
  • 2012-07-15
  • 2014-05-28
  • 1970-01-01
  • 2018-03-17
相关资源
最近更新 更多