2013-12-22 1 views
1

Infinispan 6.0Infinispan 최대 절전 모드 검색 예외 : org.hibernate.hql.ParsingException : HQLLUCN000003

안녕을 사용하여 나는 임베디드 캐시 모드에서 설정 infinispan을 가지고 있고 나는 cahce에 쓸 수 있어요. 이제 인덱싱을 추가하려고하는데 제대로로드되지만 캐시를 쿼리하려고 할 때 다음 예외가 발생합니다 ...

org.hibernate.hql.ParsingException : HQLLUCN000003 : 쿼리를 적용 할 수 없습니다. 속성이 분석되기 때문에 유형 com.xxx.model.MyModel의 속성 ABC로

Google에서이 오류에 대한 정보를 찾을 수없는 것 같습니다.

@Indexed 
public class MyModel implements Serializable 
{ 
private static final long serialVersionUID = -3764014970811943408L; 

    Integer key; 
    @Field 
    @Field 
    String ABC; 
} 

내 쿼리가 이것이다

Infinispan 설정 ...

<namedCache name="XYZ"> 
    <eviction strategy="LIRS" maxEntries="30000000" /> 
    <indexing enabled="true" indexLocalOnly="true"> 
     <properties> 
      <property name="default.directory_provider" value="ram" /> 
     </properties> 
    </indexing> 
</namedCache> 

모델이입니다 ...

Query query = qf.from(MyModel.class) 
    .maxResults(20000) 
    .having("ABC") 
    .toBuilder().build(); 

로그 출력이 좋아 보인다

DEBUG org.infinispan.jmx.JmxUtil - Object name org.infinispan:type=Cache,name="__cluster_registry_cache__(local)",manager="DefaultCacheManager",component=Cache already registered 
INFO o.i.jmx.CacheJmxRegistration - ISPN000031: MBeans were successfully registered to the platform MBean server. 
DEBUG org.infinispan.CacheImpl - Started cache __cluster_registry_cache__ on null 
DEBUG o.i.interceptors.InterceptorChain - Interceptor chain size: 7 
DEBUG o.i.interceptors.InterceptorChain - Interceptor chain is: 
    >> org.infinispan.interceptors.InvocationContextInterceptor 
    >> org.infinispan.interceptors.CacheMgmtInterceptor 
    >> org.infinispan.interceptors.NotificationInterceptor 
    >> org.infinispan.interceptors.locking.NonTransactionalLockingInterceptor 
    >> org.infinispan.query.backend.LocalQueryInterceptor 
    >> org.infinispan.interceptors.EntryWrappingInterceptor 
    >> org.infinispan.interceptors.CallInterceptor 
DEBUG org.infinispan.jmx.JmxUtil - Object name org.infinispan:type=Cache,name="XYZ(local)",manager="DefaultCacheManager",component=Cache already registered 
INFO o.i.jmx.CacheJmxRegistration - ISPN000031: MBeans were successfully registered to the platform MBean server. 
DEBUG org.infinispan.CacheImpl - Started cache XYZ on null 
내가 쿼리 할 때 53,691,363,210

그리고는 ... 오류 메시지가 제안되어

WARN o.h.search.impl.ConfigContext - HSEARCH000075: Configuration setting hibernate.search.lucene_version was not specified, using LUCENE_CURRENT. 
DEBUG o.h.s.b.impl.lucene.WorkspaceFactory - Starting workspace for index com.xxx.model.Transaction using an exclusive index strategy 
DEBUG o.h.s.e.s.DocumentBuilderIndexedEntity - Field selection in projections is set to true for entity com.xxx.model.MyModel. 
org.hibernate.hql.ParsingException: HQLLUCN000003: No queries can be applied to property ABC in type com.xxx.model.MyModel since the property is analyzed. 
    at org.hibernate.hql.lucene.internal.ClassBasedLuceneQueryResolverDelegate.normalizeProperty(ClassBasedLuceneQueryResolverDelegate.java:218) 
    at org.hibernate.hql.lucene.internal.ClassBasedLuceneQueryResolverDelegate.normalizePropertyPathTerminus(ClassBasedLuceneQueryResolverDelegate.java:208) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.pathedPropertyReference(GeneratedHQLResolver.java:13086) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.propertyReferencePath(GeneratedHQLResolver.java:12917) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.valueExpressionPrimary(GeneratedHQLResolver.java:7950) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.valueExpression(GeneratedHQLResolver.java:7483) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.rowValueConstructor(GeneratedHQLResolver.java:6377) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.predicate(GeneratedHQLResolver.java:5213) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4858) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4746) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4746) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4746) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4746) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4746) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4746) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.whereClause(GeneratedHQLResolver.java:2348) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.querySpec(GeneratedHQLResolver.java:2203) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryExpression(GeneratedHQLResolver.java:2106) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryStatement(GeneratedHQLResolver.java:1745) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryStatementSet(GeneratedHQLResolver.java:1658) 
    at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.statement(GeneratedHQLResolver.java:654) 
    at org.hibernate.hql.ast.spi.QueryResolverProcessor.process(QueryResolverProcessor.java:52) 
    at org.hibernate.hql.QueryParser.parseQuery(QueryParser.java:82) 
    at org.infinispan.query.dsl.embedded.impl.EmbeddedLuceneQueryBuilder.build(EmbeddedLuceneQueryBuilder.java:51) 
    at org.infinispan.query.dsl.embedded.impl.EmbeddedLuceneQueryBuilder.build(EmbeddedLuceneQueryBuilder.java:27) 
    at com.xxx.vertx.Inifini.handle(Inifini.java:97) 
    at com.xxx.vertx.Inifini.handle(Inifini.java:1) 
    at org.vertx.java.core.eventbus.impl.DefaultEventBus$11.run(DefaultEventBus.java:929) 
    at org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:176) 
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) 
    at java.lang.Thread.run(Thread.java:722) 

답변

2

으로, 쿼리 이런 종류의 당신은 비 분석 필드가 필요합니다. 당신은 당신의 모델을 변경하여 그것을 얻을 :

import org.hibernate.search.annotations.Field; 
import org.hibernate.search.annotations.Analyze; 

@Field(analyze = Analyze.NO) 
String ABC; 

주 당신은 어디에서이 필드가 분석해야 할 필요가있는 경우 - 그것은 다른 고급 질의에 대한 요구 사항의로 - 당신은 그것의 복수형 @Fields에 주석을 사용할 수 있습니다을 사용하여 옵션이 다른 여러 필드를 나열하십시오.

+0

그래서 내가 straigh equals 쿼리를 수행하는 경우 Analyze = NO는 성능 향상에 적합해야합니까? 거기에 할 여분의 분석 이후로? – user432024

+0

기본 설정에서 오류를 던진 이유를 아는 것도 좋을 것입니다. – user432024