[hibernate-dev] SQLServer getLimitString() refactoring
Demetz, Guenther
Guenther.Demetz at wuerth-phoenix.com
Thu Jun 14 03:28:55 EDT 2012
Hi Lukasz,
>>Query "select id, description descr, (select max(id) from Product2) maximum from Product2" fails for me (even without paging)
This is because HQL apparently does not support the suppression of the "AS" keyword for aliases, so this query works only by using the Native-SQL api.
>>I think that my modifications are more or less ready and you can view them here:
>>https://github.com/lukasz-antoniak/hibernate-core/compare/SQLServerLimitString
I noticed that in your branch
s.createQuery( "from Product2 where description like :pattern order by id" ).setString( "pattern", "Kit%" ).setFirstResult( 0 ).setMaxResults( 2 ).list();
is producing following query (formatted output obtained with p6spy):
WITH query AS (SELECT
inner_query.*,
ROW_NUMBER() OVER (
ORDER BY
CURRENT_TIMESTAMP) as __hibernate_row_nr__
FROM
( select
TOP(3) product2x0_.id as id0_,
product2x0_.description as descript2_0_
from
Product2 product2x0_
where
product2x0_.description like 'Kit%'
order by
product2x0_.id ) inner_query ) SELECT
id0_,
descript2_0_
FROM
query
WHERE
__hibernate_row_nr__ >= 1
AND __hibernate_row_nr__ < 3
The result is correct, but anyway I have 2 little objections:
- I expected to find TOP(2) instead of TOP(3).
Although due the __hibernate_row_nr__ restriction the final result is correct, I find this a little disconcerting..
- I hoped that due to the changes in Dialect.class you were already able to implement also HHH-7370
In front of such complex transformation as it has become now, I believe that HHH-7370 gains importance,
what do you think about?
select
TOP(2) product2x0_.id as id0_,
product2x0_.description as descript2_0_
from
Product2 product2x0_
where
product2x0_.description like 'Kit%'
order by
product2x0_.id
best regards
G.D.
More information about the hibernate-dev
mailing list