JPA 原生查询
Posted
技术标签:
【中文标题】JPA 原生查询【英文标题】:JPA Native Query 【发布时间】: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
【参考方案1】:
我遇到了同样的问题,并将查询的 select 子句更改为:
EXP_STATUS || '' as EXP_STATUS
那么它是一个 VARCHAR 而不是 CHAR,JPA 会将它作为字符串而不是字符返回。
如果有人知道更好/更优雅的解决方案,如果您能分享,我将不胜感激。
【讨论】:
工作就像一个魅力以上是关于JPA 原生查询的主要内容,如果未能解决你的问题,请参考以下文章