简体   繁体   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;

The above query is running in the mysql-console properly ,but when I am integrating with the Hibernate,following error is thrown by Hibernate. 上面的查询在mysql-console中正常运行,但是当我与Hibernate集成时,Hibernate会引发以下错误。

[BigIntegerType] could not read column value from result set: ID; [BigIntegerType]无法从结果集中读取列值:ID; Column 'ID' not found. 找不到列“ ID”。

Try getting rid of the alias names in your SQL query. 尝试在您的SQL查询中删除别名。

Basically what happens here is when you run 基本上这里发生的是您跑步时

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

in JDBC it returns the column as CREG.ID instead of ClientID. 在JDBC中,它将列作为CREG.ID而不是ClientID返回。 So try running the query without the aliases, typically, there is a problem in JDBC with this. 因此,请尝试在不使用别名的情况下运行查询,通常在JDBC中存在一个问题。 If you still insist on using aliases,add the following entry to JDBC URL in configuration file 如果仍然坚持使用别名,请将以下条目添加到配置文件中的JDBC URL中

[useOldAliasMetadataBehavior=true] [useOldAliasMetadataBehavior = true]

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

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