3

以下の HQL クエリに問題があります。

var merchantTransactions = session.CreateQuery("SELECT MS.Transaction "+
                                               "FROM MerchantSite AS MS "+
                                               "INNER JOIN MS.Transaction AS MST"+
                                               "WHERE MS.Site.Name = :merchantName");

次に、次のようにパラメーターを設定します。

merchantTransactions.SetParameter("merchantName", merchantName);

そして、「名前付きパラメーターが見つかりませんでした」というエラーが表示されますが、その理由は何ですか?

MerchantName はこのコンテキストに存在し、すべてのテーブル名は正しいです。

4

2 に答える 2

12

MSTと の間にスペースがありませんWHERE

于 2012-10-11T17:00:47.010 に答える
0

流暢なインターフェイススタイルを使用して HQL ステートメントを作成するには、メソッドを使用する必要があります。次のようなことを試してください:

var merchantTransactions = session.CreateQuery("SELECT MS.Transaction "+
                                               "FROM MerchantSite AS MS "+
                                               "INNER JOIN MS.Transaction AS MST"+
                                               "WHERE MS.Site.Name = :merchantName")
                                  .SetParameter("merchantName", merchantName);

または

merchantTransactions = merchantTransactions.SetParameter("merchantName", merchantName);

そして、クエリを具体化するメソッドを呼び出すことを忘れないでください。

  var result = merchantTransactions.List<Entity>();
于 2012-10-11T16:10:30.340 に答える