-1

Oracle DB の NHibernate でページングを実行しようとしています。ただし、NHibernate 3.3 でも、SetFirstResult と SetMaxResults は機能しません (予測不能であり、多くの場合、ゼロの結果が返されます)。

私は今、クエリで「rownum」を使用して同じことをしようとしています。私はこれを試しました:

  finalCriteria
  .Add(Restrictions.Between(Projections.SqlProjection("rownum", new string[] { "RowNumber" }, new IType[] { NHibernateUtil.Int64 }), rowIndex, rowIndex + pageSize));

ただし、機能しません (ORA-00936: 式が見つかりません)

助言がありますか?

これは私が無駄に使用した方法の1つです。 SetFirst & SetMax

finalCriteria.SetFirstResults(pageIndex* pageSize).SetMaxResults(pageSize)

ありがとう!

4

2 に答える 2

1

うまくいかない理由はわかりませんが、Oracle 11 で SetFirstResult と SetMaxResult を使用して成功しています。これは私たちのコードで、あなたのものと非常によく似ています:

criteria.SetFirstResult(pageSize * Offset);
criteria.SetMaxResults(pageSize);

問題に気づいたことはありません。hibernate が作成する sql ステートメントを確認しましたか?

于 2012-08-21T12:50:34.750 に答える
0

私はここ数年、NHibernate で Oracle を使用していますが、いくつかの極端なシナリオを除いて、ページングで問題が発生したことはありません。SetFirstResult と SetMaxResults が機能します。NHibernate Profiler http://www.nhprof.orgを使用して、実際に作成された sql を確認できます。これはあなたを助けるかもしれません

于 2012-08-21T18:41:46.763 に答える