2009-07-21 2 views
2

내 프로젝트에서 Nhibernate 2.1.0을 사용하고 있습니다.nHibernate 명명 된 쿼리에서 replace SQL 함수 사용

session.GetNamedQuery("updateUNC") 
     .SetString("oldUNC", "old") 
     .SetString("newUNC", "new") 
     .ExecuteUpdate(); 

하지만 다음과 같은 예외를 얻을 : 나는 다음과 같은 코드를 사용하여 명명 된 쿼리를 실행

<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2'> 
    <sql-query name='updateUNC'> 
    <query-param name='oldUNC' type='String'/> 
    <query-param name='newUNC' type='String'/> 
    <![CDATA[ 
     update Item s set 
      s.Path= replace(s.Path,:oldUNC, :newUNC), 
    ]]> 
    </sql-query> 
</hibernate-mapping> 

:

나는 속성 경로와 아이템 클래스 다음과 같은 명명 된 쿼리를 가지고 :

NHibernate.Hql.Ast.ANTLR.QuerySyntaxException was unhandled 
    Message="Can't determine SqlType of parameter name=oldUNC, expectedType=Unknow\n  Possible cause: wrong case-sensitive property-name." 
    Source="NHibernate" 
    StackTrace: 
     at NHibernate.Hql.Ast.ANTLR.Exec.BasicExecutor.Execute(QueryParameters parameters, ISessionImplementor session) in C:\Projects\Nhibernate\nhibernate2.1.0\src\NHibernate\Hql\Ast\ANTLR\Exec\BasicExecutor.cs:line 66 
     at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.ExecuteUpdate(QueryParameters queryParameters, ISessionImplementor session) in C:\Projects\Nhibernate\nhibernate2.1.0\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 149 
     at NHibernate.Engine.Query.HQLQueryPlan.PerformExecuteUpdate(QueryParameters queryParameters, ISessionImplementor session) in C:\Projects\Nhibernate\nhibernate2.1.0\src\NHibernate\Engine\Query\HQLQueryPlan.cs:line 328 
     at NHibernate.Impl.StatelessSessionImpl.ExecuteUpdate(String query, QueryParameters queryParameters) in C:\Projects\Nhibernate\nhibernate2.1.0\src\NHibernate\Impl\StatelessSessionImpl.cs:line 962 
     at NHibernate.Impl.QueryImpl.ExecuteUpdate() in C:\Projects\Nhibernate\nhibernate2.1.0\src\NHibernate\Impl\QueryImpl.cs:line 120 
     at Catalog.Repository.ItemsRepository.ChangeUNC(String oldUNC, String newUNC) in C:\Projects\Catalog\Catalog\Repository\ItemsRepository.cs:line 148 

SetParameter를 사용하여 매개 변수 값을 설정해 보았습니다.string> 및 SetParameter (": oldUNC", "old"NHibernateUtil.String)하지만 동일한 오류로 실패했습니다. 그것은 NHibernate에 그냥 텟 TEH 매개 변수 값이 :(문자열 말하는 날 무시처럼 그냥 추측

답변

0

:. 당신은 매핑 파일에서 소문자로 문자열을 작성하려고 했

<query-param name='oldUNC' type='string'/> 
+0

예 내가 한 그것을? 도움이 안돼. –

관련 문제