这是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; =?按顺序排列。
所以我确信我没有以正确的方式做到这一点。有人可以帮忙吗?
答案 0 :(得分:0)
您需要提供orderBy信息才能使查询生效。