古い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
前もって感謝します。