I am executing the same criteria against SQLServer and Oracle and get two 
differen tresults.  the data in both databases is exactly the same.
 
First, here is my code.
 
ICriteria crit = CurrentSession.CreateCriteria(typeof(T));

crit.SetFirstResult(3);

crit.SetMaxResults(1);

IList<T> set = crit.List<T>();

 

I am wanting to get 1 row starting from record 4 (assuming 0 base).  That 
is exactly the result I get from SQL Server but the query generated for 
Oracle returns 0.  Here are the queries generated by nHibernate captured 
through NHProfiler.

SQL SERVER QUERY

SELECT TOP (1 /* @p0 */) Id64_0_,
                 Code64_0_,
                 Name64_0_,
                 Targeted64_0_,
                 StartDate64_0_,
                 EndDate64_0_,
                 DisplayO7_64_0_,
                 CreateDate64_0_,
                 UpdateDate64_0_
FROM   (SELECT this_.Id                                      as Id64_0_,
               this_.Code                                    as Code64_0_,
               this_.Name                                    as Name64_0_,
               this_.Targeted                                as 
Targeted64_0_,
               this_.StartDate                               as 
StartDate64_0_,
               this_.EndDate                                 as 
EndDate64_0_,
               this_.DisplayOrder                            as 
DisplayO7_64_0_,
               this_.CreateDate                              as 
CreateDate64_0_,
               this_.UpdateDate                              as 
UpdateDate64_0_,
               ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as 
__hibernate_sort_row
        FROM   LW_Promotion this_
        WHERE  this_.Id in (2 /* @p1 */, 4 /* @p2 */, 5 /* @p3 */, 6 /* @p4 
*/,
                            7 /* @p5 */, 8 /* @p6 */)) as query
WHERE  query.__hibernate_sort_row > 3 /* @p7 */
ORDER  BY query.__hibernate_sort_row

ORACLE QUERY

 

select Id64_0_,
       Code64_0_,
       Name64_0_,
       Targeted64_0_,
       StartDate64_0_,
       EndDate64_0_,
       DisplayO7_64_0_,
       CreateDate64_0_,
       UpdateDate64_0_
from   (select row_.*,
               rownum rownum_
        from   (SELECT this_.Id           as Id64_0_,
                       this_.Code         as Code64_0_,
                       this_.Name         as Name64_0_,
                       this_.Targeted     as Targeted64_0_,
                       this_.StartDate    as StartDate64_0_,
                       this_.EndDate      as EndDate64_0_,
                       this_.DisplayOrder as DisplayO7_64_0_,
                       this_.CreateDate   as CreateDate64_0_,
                       this_.UpdateDate   as UpdateDate64_0_
                FROM   LW_Promotion this_
                WHERE  this_.Id in (44 /* :p0 */, 162 /* :p1 */, 165 /* :p2 
*/, 168 /* :p3 */,
                                    171 /* :p4 */, 174 /* :p5 */)) row_
        where  rownum <= 1 /* :p6 */)
where  rownum_ > 3 /* :p7 */

 

Can anybody shed some light as to what is nHobernate tryign to do with the 
oracle query.

 

Thanks in advance.

 

Waqar Sadiq

 

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to