2015-01-24 2 views
0

Orchard.Projections 모듈을 사용하면 유니 코드 텍스트를 검색 할 수 없습니다. 예를 들어 결과 쿼리는 Select ... From ... Where ... Col Like '%term%'이지만 Select ... From ... Where ... Col Like N'%term%' (NLike 이후에 포함)입니다. 코드에서 보면 public static BinaryExpression Like()Orchard.ContentManagement.HqlRestrictions입니다. N을 첨가 value = "N'%" + FormatValue(value, false) + "%'";value = "'%" + FormatValue(value, false) + "%'";을 변화시킴으로써 우리는이 에러 얻을 :Orchard CMS의 NHibernate.Hql.Ast.ANTLR.QuerySyntaxException

NHibernate.Hql.Ast.ANTLR.QuerySyntaxException was caught 
    HResult=-2146232832 
    Message=Exception of type 'Antlr.Runtime.MismatchedTokenException' was thrown. near line 9, column 61 
    Source=NHibernate 
    StackTrace: 
     at NHibernate.Hql.Ast.ANTLR.ErrorCounter.ThrowQueryException() in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Hql\Ast\ANTLR\ErrorCounter.cs:line 73 
     at NHibernate.Hql.Ast.ANTLR.HqlParseEngine.Parse() in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 479 
     at NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String queryString, String collectionRole, Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor factory) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Hql\Ast\ANTLR\ASTQueryTranslatorFactory.cs:line 19 
     at NHibernate.Engine.Query.HQLStringQueryPlan.CreateTranslators(String hql, String collectionRole, Boolean shallow, IDictionary`2 enabledFilters, ISessionFactoryImplementor factory) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Engine\Query\HQLStringQueryPlan.cs:line 24 
     at NHibernate.Engine.Query.HQLStringQueryPlan..ctor(String hql, String collectionRole, Boolean shallow, IDictionary`2 enabledFilters, ISessionFactoryImplementor factory) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Engine\Query\HQLStringQueryPlan.cs:line 16 
     at NHibernate.Engine.Query.HQLStringQueryPlan..ctor(String hql, Boolean shallow, IDictionary`2 enabledFilters, ISessionFactoryImplementor factory) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Engine\Query\HQLStringQueryPlan.cs:line 14 
     at NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(String queryString, Boolean shallow, IDictionary`2 enabledFilters) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Engine\Query\QueryPlanCache.cs:line 62 
     at NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(String query, Boolean shallow) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Impl\AbstractSessionImpl.cs:line 310 
     at NHibernate.Impl.AbstractSessionImpl.CreateQuery(String queryString) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Impl\AbstractSessionImpl.cs:line 289 
     at Orchard.ContentManagement.DefaultHqlQuery.Slice(Int32 skip, Int32 count) in d:\Projects\...\src\Orchard\ContentManagement\DefaultHqlQuery.cs:line 188 
     at Orchard.Projections.Services.ProjectionManager.GetContentItems(Int32 queryId, Int32 skip, Int32 count) 
     at Orchard.Projections.Drivers.ProjectionPartDriver.<>c__DisplayClass2e.<Display>b__1e(Object shape) 
     at Orchard.ContentManagement.Drivers.ContentPartDriver`1.<>c__DisplayClass12.<ContentShape>b__11(BuildShapeContext ctx) in d:\Projects\...\src\Orchard\ContentManagement\Drivers\ContentPartDriver.cs:line 135 
     at Orchard.ContentManagement.Drivers.ContentPartDriver`1.<>c__DisplayClass15.<ContentShapeImplementation>b__14(BuildShapeContext ctx) in d:\Projects\...\src\Orchard\ContentManagement\Drivers\ContentPartDriver.cs:line 140 
     at Orchard.ContentManagement.Drivers.ContentShapeResult.ApplyImplementation(BuildShapeContext context, String displayType) in d:\Projects\...\src\Orchard\ContentManagement\Drivers\ContentShapeResult.cs:line 45 
     at Orchard.ContentManagement.Drivers.ContentShapeResult.Apply(BuildDisplayContext context) in d:\Projects\...\src\Orchard\ContentManagement\Drivers\ContentShapeResult.cs:line 21 
     at Orchard.ContentManagement.Drivers.CombinedResult.Apply(BuildDisplayContext context) in d:\Projects\...\src\Orchard\ContentManagement\Drivers\CombinedResult.cs:line 28 
     at Orchard.ContentManagement.Drivers.Coordinators.ContentPartDriverCoordinator.<>c__DisplayClassa.<BuildDisplay>b__9(IContentPartDriver driver) in d:\Projects\...\src\Orchard\ContentManagement\Drivers\Coordinators\ContentPartDriverCoordinator.cs:line 49 
     at Orchard.InvokeExtensions.Invoke[TEvents](IEnumerable`1 events, Action`1 dispatch, ILogger logger) in d:\Projects\...\src\Orchard\InvokeExtensions.cs:line 17 
    InnerException: 

9 행, 칼럼 61는 'N'의 위치를 ​​나타낸다.

아이디어가 있으십니까? 이 모듈을 사용하여 데이터베이스 데이터 정렬을 변경하지 않고 유니 코드 텍스트를 검색하려면 어떻게해야합니까?

과수원 버전은 1.8.1

+0

* 네이티브 NHibernate에서 ** 래퍼 **의 세계로 ... * Hibernate의 네이티브 HQL은 params를 지원합니까? var hql = "FROM Entity e WHERE e.Property : value ";"그리고 유니 코드 메소드로 값을 설정함으로써 :'.SetString ("value", unicodeValue);'- 생성 된 SQL은 예상대로 작동합니다 ... –

+0

버그를 기증하십시오. –

+0

@BertrandLeRoy, 토론을 게시했습니다. https://orchard.codeplex.com/discussions/578488. 문제를 스레드로 옮길 수 있습니까? 그건 그렇고, 어떤 빠른 해결책? 우리는 다음 릴리스를 기다릴 수 없을 수도 있습니다. 감사합니다 – Babak

답변

0

빠른 수정입니다. 데이터베이스의 데이터 정렬 설정을 직접 바꿨습니다