3

このクエリを実行しようとすると:

        var q = session.QueryOver<Member>();
         q.Select(Projections.Avg<Member>(x => x.AccountBalance));
          var result = q.List();

私は得ています:

Dialect does not support DbType.Double
Parameter name: typecode

何か案は?私は MySQL 方言を使用していますが、非常に単純なため、クエリがどこで間違っているのか想像できません。

AccountBalanceタイプdoubleです。IDlong 型のフィールドの平均でも試してみましたが、まったく同じエラー メッセージが表示されます。

4

2 に答える 2

8

Hibernate はキャストを使用して、関数の戻り値の型を保証しAVGます。

NUMERICバージョン 5 より前の MySQL は、式の型をサポートしていませんCASTこのサポートは、MySql 5.0.8 で追加されました。したがって、MySQL5Dialect を使用する必要があります。

元の答え

これが役立つかどうかはわかりませんが、上で述べたように、同様の問題がありました。もう少し掘り下げてみると、NHibernate.Dialect.MySQLDialect (FluentNHibernate.Cfg.Db.MySQLConfiguration 経由) を使用していたことがわかりました。

私の問題を解決するために、代わりに MySQL5Dialect を使用しました。

Fluently.Configure().Database(MySQLConfiguration.Standard
    .Dialect<MySQL5Dialect>()
    .ConnectionString(connectionString))

私は本当にこれに頭を悩ませていたので、これがあなたの助けになることを願っています...

于 2012-02-23T14:10:11.437 に答える
0

構成ファイルまたはブートストラップで方言を変更します

于 2014-02-26T13:21:46.010 に答える