spring data - How to find nearest value using queryDSL JPA -


i want rewrite following sql using querydsl jpa , spring data querydslpredicateexecutor:

select * roadobject order abs(positionm - 1000) 

i've tried this:

predicate predicate = roadobjectpredicates.topredicate(filter); // condition... qroadobject obj = qroadobject.roadobject; orderspecifier order = new orderspecifier<>(order.asc, obj.positionm.subtract(1000).abs()); iterable<roadobject> test = roadobjectdao.findall(predicate, order); 

but throws:

java.lang.classcastexception: com.mysema.query.types.expr.numberoperation cannot cast com.mysema.query.types.path 

edit full stacktrace

java.lang.classcastexception: com.mysema.query.types.expr.numberoperation cannot cast com.mysema.query.types.path @ org.springframework.data.querydsl.qsort.toorder(qsort.java:89) ~[spring-data-commons-1.7.1.release.jar:na] @ org.springframework.data.querydsl.qsort.toorders(qsort.java:72) ~[spring-data-commons-1.7.1.release.jar:na] @ org.springframework.data.querydsl.qsort.<init>(qsort.java:55) ~[spring-data-commons-1.7.1.release.jar:na] @ org.springframework.data.querydsl.qsort.<init>(qsort.java:46) ~[spring-data-commons-1.7.1.release.jar:na] @ org.springframework.data.jpa.repository.support.querydsljparepository.findall(querydsljparepository.java:105) ~[spring-data-jpa-1.5.1.release.jar:na] @ org.springframework.data.jpa.repository.support.querydsljparepository.findall(querydsljparepository.java:44) ~[spring-data-jpa-1.5.1.release.jar:na] @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[na:1.7.0_51] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) ~[na:1.7.0_51] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[na:1.7.0_51] @ java.lang.reflect.method.invoke(method.java:606) ~[na:1.7.0_51] @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.executemethodon(repositoryfactorysupport.java:358) ~[spring-data-commons-1.7.1.release.jar:na] @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.invoke(repositoryfactorysupport.java:343) ~[spring-data-commons-1.7.1.release.jar:na] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.interceptor.transactioninterceptor$1.proceedwithinvocation(transactioninterceptor.java:98) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:262) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:95) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.dao.support.persistenceexceptiontranslationinterceptor.invoke(persistenceexceptiontranslationinterceptor.java:136) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.data.jpa.repository.support.lockmoderepositorypostprocessor$lockmodepopulatingmethodintercceptor.invoke(lockmoderepositorypostprocessor.java:92) ~[spring-data-jpa-1.5.1.release.jar:na] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.interceptor.exposeinvocationinterceptor.invoke(exposeinvocationinterceptor.java:92) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.jdkdynamicaopproxy.invoke(jdkdynamicaopproxy.java:207) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ com.sun.proxy.$proxy115.findall(unknown source) ~[na:na] @ ru.rosavtodor.sc.monitoring.web.services.registrylistservice.listroadobjects_aroundbody4(registrylistservice.java:119) ~[registrylistservice.class:na] @ ru.rosavtodor.sc.monitoring.web.services.registrylistservice$ajcclosure5.run(registrylistservice.java:1) ~[na:na] @ org.springframework.transaction.aspectj.abstracttransactionaspect.ajc$around$org_springframework_transaction_aspectj_abstracttransactionaspect$1$2a73e96cproceed(abstracttransactionaspect.aj:59) ~[spring-aspects-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.aspectj.abstracttransactionaspect$abstracttransactionaspect$1.proceedwithinvocation(abstracttransactionaspect.aj:65) ~[spring-aspects-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:262) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.aspectj.abstracttransactionaspect.ajc$around$org_springframework_transaction_aspectj_abstracttransactionaspect$1$2a73e96c(abstracttransactionaspect.aj:63) ~[spring-aspects-4.0.3.release.jar:4.0.3.release] @ ru.rosavtodor.sc.monitoring.web.services.registrylistservice.listroadobjects(registrylistservice.java:112) ~[registrylistservice.class:na] @ ru.rosavtodor.sc.monitoring.web.services.registrylistservice$$fastclassbyspringcglib$$db93970e.invoke(<generated>) ~[spring-core-4.0.3.release.jar:na] @ org.springframework.cglib.proxy.methodproxy.invoke(methodproxy.java:204) ~[spring-core-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.cglibaopproxy$cglibmethodinvocation.invokejoinpoint(cglibaopproxy.java:711) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:157) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.interceptor.transactioninterceptor$1.proceedwithinvocation(transactioninterceptor.java:98) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:262) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:95) ~[spring-tx-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ org.springframework.aop.framework.cglibaopproxy$dynamicadvisedinterceptor.intercept(cglibaopproxy.java:644) ~[spring-aop-4.0.3.release.jar:4.0.3.release] @ ru.rosavtodor.sc.monitoring.web.services.registrylistservice$$enhancerbyspringcglib$$764e1c0b.listroadobjects(<generated>) ~[spring-core-4.0.3.release.jar:na] @ ru.rosavtodor.sc.monitoring.web.controllers.registrycontroller.getroadobjects(registrycontroller.java:93) ~[registrycontroller.class:na] @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[na:1.7.0_51] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) ~[na:1.7.0_51] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[na:1.7.0_51] @ java.lang.reflect.method.invoke(method.java:606) ~[na:1.7.0_51] @ org.springframework.web.method.support.invocablehandlermethod.invoke(invocablehandlermethod.java:215) ~[spring-web-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:132) ~[spring-web-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:104) ~[spring-webmvc-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlemethod(requestmappinghandleradapter.java:749) ~[spring-webmvc-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:689) ~[spring-webmvc-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:83) ~[spring-webmvc-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:938) ~[spring-webmvc-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:870) ~[spring-webmvc-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:961) [spring-webmvc-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.servlet.frameworkservlet.doget(frameworkservlet.java:852) [spring-webmvc-4.0.3.release.jar:4.0.3.release] @ javax.servlet.http.httpservlet.service(httpservlet.java:620) [servlet-api.jar:na] @ org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:837) [spring-webmvc-4.0.3.release.jar:4.0.3.release] @ javax.servlet.http.httpservlet.service(httpservlet.java:727) [servlet-api.jar:na] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) [catalina.jar:7.0.53] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) [catalina.jar:7.0.53] @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) [tomcat7-websocket.jar:7.0.53] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241) [catalina.jar:7.0.53] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) [catalina.jar:7.0.53] @ org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:88) [spring-web-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:108) [spring-web-4.0.3.release.jar:4.0.3.release] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241) [catalina.jar:7.0.53] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) [catalina.jar:7.0.53] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:330) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.access.intercept.filtersecurityinterceptor.invoke(filtersecurityinterceptor.java:118) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.access.intercept.filtersecurityinterceptor.dofilter(filtersecurityinterceptor.java:84) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.access.exceptiontranslationfilter.dofilter(exceptiontranslationfilter.java:113) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.session.sessionmanagementfilter.dofilter(sessionmanagementfilter.java:103) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.authentication.anonymousauthenticationfilter.dofilter(anonymousauthenticationfilter.java:113) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.servletapi.securitycontextholderawarerequestfilter.dofilter(securitycontextholderawarerequestfilter.java:154) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.savedrequest.requestcacheawarefilter.dofilter(requestcacheawarefilter.java:45) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.authentication.www.basicauthenticationfilter.dofilter(basicauthenticationfilter.java:150) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.authentication.abstractauthenticationprocessingfilter.dofilter(abstractauthenticationprocessingfilter.java:199) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.authentication.logout.logoutfilter.dofilter(logoutfilter.java:110) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.context.request.async.webasyncmanagerintegrationfilter.dofilterinternal(webasyncmanagerintegrationfilter.java:50) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:108) [spring-web-4.0.3.release.jar:4.0.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.context.securitycontextpersistencefilter.dofilter(securitycontextpersistencefilter.java:87) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:342) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy.dofilterinternal(filterchainproxy.java:192) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:160) [spring-security-web-3.2.3.release.jar:3.2.3.release] @ org.springframework.web.filter.delegatingfilterproxy.invokedelegate(delegatingfilterproxy.java:344) [spring-web-4.0.3.release.jar:4.0.3.release] @ org.springframework.web.filter.delegatingfilterproxy.dofilter(delegatingfilterproxy.java:261) [spring-web-4.0.3.release.jar:4.0.3.release] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241) [catalina.jar:7.0.53] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) [catalina.jar:7.0.53] @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220) [catalina.jar:7.0.53] @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122) [catalina.jar:7.0.53] @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:501) [catalina.jar:7.0.53] @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170) [catalina.jar:7.0.53] @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:98) [catalina.jar:7.0.53] @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950) [catalina.jar:7.0.53] @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116) [catalina.jar:7.0.53] @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) [catalina.jar:7.0.53] @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1040) [tomcat-coyote.jar:7.0.53] @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:607) [tomcat-coyote.jar:7.0.53] @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.dorun(aprendpoint.java:2441) [tomcat-coyote.jar:7.0.53] @ org.apache.tomcat.util.net.aprendpoint$socketprocessor.run(aprendpoint.java:2430) [tomcat-coyote.jar:7.0.53] @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) [na:1.7.0_51] @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) [na:1.7.0_51] @ java.lang.thread.run(thread.java:744) [na:1.7.0_51] 

is possible?

it has been fixed in spring data dijkstra sr4.

bugs datacmns-566 , datajpa-596

edit: modified answer answer!


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -