2

古いOracle 8i本番データベースに接続するために、.Net OracleClientでNHibernate 2.1.2.4000を使用するプロジェクトがあります。正しいクエリを生成する ICriteria を実装しましたが、次の内部例外が発生します: System.Data.OracleClient.OracleException: ORA-12704: character set mismatch

return Session.
                CreateCriteria<Carrera>().
                SetProjection(Projections.SqlFunction("concat", NHibernateUtil.AnsiString, Projections.Property("Descripcion"), Projections.Constant(s), Projections.Property("Id"))).
                Add(Expression.InsensitiveLike("Descripcion", filter.Trim(), MatchMode.Anywhere)).
                SetMaxResults(cant).
                List<String>();

私の質問は: Projections.Constant(object, IType) の引数で IType AnsiString を宣言するにはどうすればよいですか? これで問題が解決する可能性があると思います。Projections.Constant() の削除をテストしましたが、すべて正常に動作します。

生成されたクエリの例:

    select
    * 
from
    ( SELECT
        (this_.CARR_DESCRIPCION||:p0||this_.CARR_CODIGO) as y0_ 
    FROM
        CARRERAS this_ 
    WHERE
        lower(this_.CARR_DESCRIPCION) like :p1 ) 
where
    rownum <=:p2;
:p0 = ', código: ', :p1 = '%2451%', :p2 = 20

前もって感謝します。

4

1 に答える 1

1

Projections.Constant(s, NHibernateUtil.AnsiString)多分?

于 2012-11-13T20:57:36.330 に答える