Spring - QueryDSL - SQL Server 2008偏移/限制问题

时间:2015-11-11 23:35:54

标签: spring limit offset querydsl


这是QueryDSL的新手。我在Spring和SQL Server 2008上使用QueryDSL。 尝试执行存储过程并使用QueryDSL偏移和限制对其进行分页。

首先,下面是我的处理方法:SELECT * FROM storedProcedureName() 我不确定这是否是实现这一目标的正确方法,因为我没有找到任何示例,但似乎有效。

    SQLTemplates dialect = new SQLServer2005Templates();
    SQLQuery sqlQuery = new SQLQuery( dialect );
    StringExpression sp = StringTemplate.create( "storedProcedureName()" );
    StringExpression a = StringTemplate.create( "*" );
    sqlQuery.from( sp );

    ArrayList<Sd> _Mapping = (ArrayList<Sd>) queryDslJdbcTemplate.query(
            sqlQuery,
            new SdRowMapper(), a );

要处理分页,我只需添加偏移量和限制方法:sqlQuery.from(sp).offset(5).limit(10)。  但我得到了#34;排名功能&#34; row_number&#34;必须有一个ORDER BY子句&#34;错误。

select * from(选择row_number()over()为rn from storedProcedureName())a其中rn&gt; ?并且rn&lt; =?按顺序排列。

所以我确信我没有以正确的方式做到这一点。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您需要提供orderBy信息才能使查询生效。