查询在 SQL 开发人员中有效,但在 MyBatis 中有错误

Query works in SQL Developer but has error in MyBatis

我的查询在 SQL Developer 中运行良好,但是当我将相同的查询复制到 MyBatis 的映射器 XML 文件中时,我得到一个 ORA-00900:无效的 SQL 语句.

映射器文件的子集:

    <select id="getTotalUniqueUsersByPage">
            resultType="KeyValuePair" 
            parameterType="RequestFilter">
        select KEY as key,sum(single_value) as value from (
            select schcm.title as key
            ,schuc.usage_count AS single_value 
            from usage_count schuc
            inner join content_master schcm
            on schcm.trace_id=schuc.trace_key
            where schcm.pagetype='Page'
         ) 
         GROUP by KEY
         order by value desc
    </select>
### The error occurred while setting parameters
### SQL: resultType="KeyValuePair" parameterType="RequestFilter">         select KEY as key,sum(single_value) as value from (             select schcm.title as key             ,schuc.usage_count AS single_value              from usage_count schuc             inner join content_master schcm             on schcm.trace_id=schuc.trace_key             where schcm.pagetype='Page'                                             )           GROUP by KEY          order by value desc
### Cause: java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement

在大多数情况下,在 SQL Developer 中运行的常规 SQL 在直接粘贴到 MyBatis 映射器文件中时也会运行。好吧,无论如何。我确实记得在最后检查分号,但这次没有犯那个错误。我想要的是让 MyBatis 调用像 SQL 开发人员调用一样工作。

更新: 尝试过

   <select id="getTotalUniqueUsersByPage">
            resultType="KeyValuePair" 
           parameterType="RequestFilter">
       select 'SomeTitle' as "Key", 55 as "Value" from dual
    </select>

但是那个调用也失败了 "ORA-00900: invalid SQL statement" 为了尊重下面的评论,我把别名括起来,这样保留字 "Key" 应该可以工作,而且确实可以在 SQL开发人员。

所以问题不在于 SQL。问题是 XML.

中额外的关闭 > 标签
 <select id="getTotalUniqueUsersByPage">
            resultType="KeyValuePair" 
           parameterType="RequestFilter">
       select 'SomeTitle' as "Key", 55 as "Value" from dual
    </select>

应该是

 <select id="getTotalUniqueUsersByPage"
            resultType="KeyValuePair" 
           parameterType="RequestFilter">
       select 'SomeTitle' as "Key", 55 as "Value" from dual
    </select>

对我来说,这是一个 XML 验证错误,但我不确定为什么它没有这样显示。我很惊讶它一路走到 Oracle,而不是抱怨不好 XML。