私はこのチャンスが、少なくとも半数以上の回答で報告されているのを見ました。流暢なNHibernate RegisterFunction SQLFunctionTemplateの使用
私の問題は、MySQLデータベース関数が定義されていることです。私は "my_func(int val)returns int"を呼び出します。これはデータベースで直接テストするとうまく動作します。
私も大丈夫です、私のリポジトリの実装を、パススルーそれは、直接SQLで動作するように、私はいくつかの神の恐ろしい理由でHQLを通るルートを、かなり思いもらいました...
Soが私は関数を登録するためのMySQL5Dialect設定を持っており、予想される規約を解析するのが難しいです。
私の理解では、関数名の前に "dbo"を付ける必要があります。機能登録中のある時点で?
このような何か、私のリポジトリを通じて
//...
RegisterFunction("my_func", new SQLFunctionTemplate(NHibernateUtil.Int32, "my_func(?1)"));
//...
そして、
FindByHQLはIListのを返しvar value = repository.FindByHQL<int>("select my_func(2)").Single();
。
これはうまくいかないと思っています。
私は最新のWAMPを実行しています(2.1eと思います)。
十分な情報?私が詳細を提供できるかどうかを教えてください。
おかげで、
マイケル
おそらく私は質問を言い換えることができます。私はこの関数で何をしたいのですか? SQLのルートは当面取り組んでいますが、ORMを潜在的に損なう可能性があり、データベースを破壊する可能性があるため、データベースをあまりにも多く公開するのは控えめです。 – Michael
私が得るエラーの種類は、これらの行に沿っています。 – Michael
@Michael:HQLでは、エンティティから選択する必要があります。あなたはこれを熟考しています。何らかの理由でDBに残っている機能があります。それは犯罪ではありません。 –