0
キャッスルActiveRecordでマップされたクラスに対してHQLクエリがあり、次のエラーが発生しました:NHibernate.QueryParameterException:名前付きパラメータ[param]が見つかりませんでした。ここでNHibernateキャッスルで、HQLがパラメータ[param]を見つけられませんでした
は簡略化され、私のクラスです:
[Serializable]
[ActiveRecord("my_table", Schema = "my_schema", UseAutoImport = false, Mutable = false)]
public class MyTable : MyServerActiveRecord<MyTable> //Extension of ActiveRecordBase<>
{
[PrimaryKey(PrimaryKeyType.Identity, "my_pk")]
public int ID {get;set;}
[Property("my_column1")]
public int MyColumn1 {get;set;}
[Property("my_column2")]
public int MyColumn2 {get;set;}
}
そして、私のHQL SetInt32
の代わりSetParameter
動作しませんでしたを使用して
public static int GetSum(int num1){
IQuery query = session.CreateQuery(@"
select sum(case when t.MyColumn2 = 2 then 1 else 0 end)
from My.Complete.Namespace.MyTable t
where t.MyColumn1 = :num
group by t.MyColumn1
");
query.SetParameter("num", num1);
return query.UniqueResult<Int32>();
}
と方法。クエリの間隔を確認しました。
7
が:num
である場合、クエリは正常に動作し、:num
とそのセットステートメントを完全に削除します。
このようなトラブルは一度もありませんでした。 'query.NamedParameters'を調べて、あなたの' HQL'クエリで何が見つかったのかを調べることができますか? –
@Frédéric、no luck、NamedParametersの長さはクエリの定義後にゼロです – allie