以前は、MySQLを使用してNHibernate2.1でマルチクエリとして次のコードを実行できました。
var total = new LeagueInfoQuery { Count = true, User = CurrentUser }.CreateCriteria(session).FutureValue<int>();
var leagues = new LeagueInfoQuery { User = CurrentUser, PageSize = pageSize, Page = page, SortBy = sortBy, SortAsc = sortAsc }.CreateCriteria(session).Future<LeagueInfo>();
var results = PaginationHelper.CreateCustomPage<LeagueInfo>(leagues, pageSize, page, total.Value);
たとえば、LeagueInfoQueryは、標準のICriteriaを作成できる単なるカスタムクエリオブジェクトです。
ただし、NHibernate 3.0にアップグレードしてから、構文エラーが発生します。例外メッセージは次のとおりです。
{"複数の基準の実行中にエラーが発生しました:[SELECT count(*)as y0_ FROM
League
this_ WHERE this_.User =?p0; \ r \ nSELECT this_.Id as y0_、this_.Name as y1_、min(f1_.Date)as y2_、 max(f1_.Date)as y3_、count(distinct t2_.Id)as y4_ FROMLeague
this_ inner joinTeam
t2_ on this_.Id = t2_.League inner joinFixture
f1_ on this_.Id = f1_.League WHERE this_.User =?p1 GROUP BY this_.Name ORDER BY y0_ desc limit?p1; \ r \ n] "}
内部例外:
{"SQL構文にエラーがあります。1行目の''b68d9d4e-a958-4fb8-8490-9e4401572f38''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。"}
したがって、構文エラーのように見えますが、これはv2.1では発生しませんでした。メッセージ内のSQLを編集して、パラメーターが値になるようにすると、動作させることができます。
では、なぜこのエラーがNHibernate3.0で発生しているのでしょうか。特にMySQL構文用に何かを構成する必要がありますか?その場合はどうなりますか?
乾杯。