0

以前は、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_ FROM Leaguethis_ inner join Teamt2_ on this_.Id = t2_.League inner join Fixturef1_ 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構文用に何かを構成する必要がありますか?その場合はどうなりますか?

乾杯。

4

1 に答える 1

0

これはNHibernate3の問題でしたが、現在は解決されています(ありがとう!)

于 2011-03-08T13:39:24.677 に答える