【发布时间】:2012-10-29 05:54:28
【问题描述】:
我有一个项目使用 NHibernate 2.1.2.4000 和 .Net OracleClient,连接到旧的 Oracle 8i 生产数据库。 我已经实现了一个 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
提前致谢。
【问题讨论】:
标签: nhibernate icriteria ansistring