繁体   English   中英

无法从Hibernate本机查询的结果集中读取列值

[英]could not read column value from result set in Hibernate Native Query

 SELECT
  CONCAT(CREG.FIRSTNAME, ' ', CREG.LASTNAME) AS NAME,
  CASE WHEN CR.CAMPAIGNTYPE = 'NPS'
    THEN NPSSCORE
  ELSE CSATSCORE END                         AS SCORE,
  IFNULL(cast(CC.TEXT AS CHAR(255)), '')     AS COMMENTS,
  CREG.ID                                    AS CLIENTID,
  CR.ID                                      AS CAMPAIGNRESPONSEID,
  CI.ID                                      AS ISSUEID
FROM CUSTOMER_ISSUES CI INNER JOIN (SELECT DISTINCT ISSUEID
                                    FROM ISSUE_DEPARTMENT_MAPPING
                                    WHERE CUSTOMERUSERID = 91 AND ISSUE_STATUS = 'New') IDM
    ON CAST(CI.FEEDBACK_DATE AS DATE) BETWEEN '2016-06-05' AND '2016-06-11' AND IDM.ISSUEID = CI.ID
  INNER JOIN CAMPAIGN_RESPONSE CR ON CR.ID = CI.CAMPAIGN_RESPONSE_ID
  INNER JOIN CLIENT_REGISTRATION CREG ON CREG.ID = CR.RESPONSECUSTOMERID
  LEFT OUTER JOIN CAMPAIGN_COMMENTS CC ON CC.CAMPAIGN_RESPONSE_ID = CR.ID;

上面的查询在mysql-console中正常运行,但是当我与Hibernate集成时,Hibernate会引发以下错误。

[BigIntegerType]无法从结果集中读取列值:ID; 找不到列“ ID”。

尝试在您的SQL查询中删除别名。

基本上这里发生的是您跑步时

SELECT
  CONCAT(CREG.FIRSTNAME, ' ', CREG.LASTNAME) AS NAME,
  CASE WHEN CR.CAMPAIGNTYPE = 'NPS'
    THEN NPSSCORE
  ELSE CSATSCORE END                         AS SCORE,
  IFNULL(cast(CC.TEXT AS CHAR(255)), '')     AS COMMENTS,
  CREG.ID                                    AS CLIENTID,
  CR.ID                                      AS CAMPAIGNRESPONSEID,
  CI.ID                                      AS ISSUEID

在JDBC中,它将列作为CREG.ID而不是ClientID返回。 因此,请尝试在不使用别名的情况下运行查询,通常在JDBC中存在一个问题。 如果仍然坚持使用别名,请将以下条目添加到配置文件中的JDBC URL中

[useOldAliasMetadataBehavior = true]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM