2014-02-27 1 views
1

모든 내 고유의 DAO에 의해 확장 된 GenericDAO 클래스가 있습니다. 이 제네릭 DAO 클래스는 아래의 메서드를 가지고 있으며 정상적으로 작동합니다. 이제일반 DAO 던짐 ClassCastException

protected List<T> findByCriteria(Criterion... criterion) { 
    Criteria crit = getSession().createCriteria(getPersistentClass()); 
    for (Criterion c : criterion) { 
     crit.add(c); 
    } 
    return crit.list(); 
} 

가, 내가 한 모든 이상의 매개 변수와 함께 다른 많은 방법을 추가이지만, 나에게 예외를 throw "java.lang.ClassCastException가 : [Ljava.lang.String, java.lang.String의 캐스팅 할 수 없습니다" . 아래는 메소드 서명입니다. 내가 노력했다

public List<T> getByCriteria(int iPage, int iCount, Order order, ProjectionList pl, Criterion... criteria){ 
    Criteria crit = getSession().createCriteria(getPersistentClass()); 
    for (Criterion c : criteria) { 
     crit.add(c); 
    } 
    // set max results to return 
    //crit.setMaxResults(iCount); 
    // set first record in result starting from 
    //crit.setFirstResult((iPage-1)*iCount); 
    //crit.list(); // Doesn't matter even if I just put it one line above without assign 
    return crit.list(); //This is the line which throws exception 
} 

은 검색 기능에 더 많은 필터 기준을 추가,하지만 때문에 예외 나는 추가 코드에서 주석 그냥 작업 기능 findByCriteria을 모방하고있다. 내가 그물을 검색하지만,이 문제를 해결하는 방법을 알아낼 수 없거나 첫 번째 방법이 잘 작동하고 두 번째 오류가 발생합니다. 둘에 의해 생성 된 최대 절전 쿼리조차도 동일합니다.

UPDATE : 는 아래의 예외 스택 추적입니다 :

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String 
at org.hibernate.type.descriptor.java.StringTypeDescriptor.unwrap(StringTypeDescriptor.java:39) 
at org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$1.doBind(VarcharTypeDescriptor.java:57) 
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:93) 
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280) 
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275) 
at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1969) 
at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1940) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1875) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816) 
at org.hibernate.loader.Loader.doQuery(Loader.java:900) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342) 
at org.hibernate.loader.Loader.doList(Loader.java:2526) 
at org.hibernate.loader.Loader.doList(Loader.java:2512) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342) 
at org.hibernate.loader.Loader.list(Loader.java:2337) 
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124) 
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1662) 
at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374) 
at com.felees.hbnpojogen.persistence.impl.GenericHibernateDaoImpl.getByCriteria(GenericHibernateDaoImpl.java:288) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
at com.sun.proxy.$Proxy44.getByCriteria(Unknown Source) 
at com.wipro.wcc.services.data.DataLayerWccarchiveImpl.executeCriteria(DataLayerWccarchiveImpl.java:510) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) 
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
at com.sun.proxy.$Proxy37.executeCriteria(Unknown Source) 
at com.wipro.wcc.controller.DocumentController.search(DocumentController.java:112) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:833) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:724) 

감사합니다,

판 카지

+0

예외 스택 추적은 ... –

답변

1

내 옆에 어리석은 실수. criteria 배열을 준비하는 동안 like, lt, eq 등의 값 대신 문자열 배열을 전달 했으므로 문제가 발생했습니다. 어떻게 내가 그것을 간과하는지에 관해 모른다.