Как создать запрос с порядковым номером enum - PullRequest
1 голос
/ 30 марта 2020

Я использую queryDSL и oracle, у меня есть объект - ClosePointRtk с полем enum в нем -

@Column(name = "LEVEL_QUALITY")
@Enumerated(EnumType.ORDINAL)
private LevelQuality levelQuality;

У меня также есть QClosePointRtk с

public final EnumPath<LevelQuality> levelQuality = createEnum("levelQuality", LevelQuality.class);

в моем oracle Поле уровня таблицы имеет тип числа, поэтому мне нужно создать запрос queryDSL, который выбирает порядковый номер моего перечисления, но когда я пытаюсь сделать это следующим образом

private fun filterByLevelQuality(query: JPASQLQuery<AddressDTO>, levelQuality: List<LevelQuality?>?) {
    query.where(closePointRtk.levelQuality.`in`(levelQuality))
}

, я получил исключение org .hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet Вот трассировка стека:

0 = {StackTraceElement@14593} "org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)"
1 = {StackTraceElement@14594} "org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)"
2 = {StackTraceElement@14595} "org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:479)"
3 = {StackTraceElement@14596} "com.querydsl.jpa.sql.AbstractJPASQLQuery.getResultList(AbstractJPASQLQuery.java:206)"
4 = {StackTraceElement@14597} "com.querydsl.jpa.sql.AbstractJPASQLQuery.fetch(AbstractJPASQLQuery.java:238)"
5 = {StackTraceElement@14598} "ru.rti.mcs.hermes.service.AddressService.createQueryBasedOnSettings(AddressService.kt:87)"
6 = {StackTraceElement@14599} "ru.rti.mcs.hermes.service.AddressService.getAddressWithFilters(AddressService.kt:31)"
7 = {StackTraceElement@14600} "ru.rti.mcs.hermes.controller.HermesController.processById(HermesController.kt:30)"
8 = {StackTraceElement@14601} "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
9 = {StackTraceElement@14602} "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"
10 = {StackTraceElement@14603} "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
11 = {StackTraceElement@14604} "java.lang.reflect.Method.invoke(Method.java:497)"
12 = {StackTraceElement@14605} "org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)"
13 = {StackTraceElement@14606} "org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)"
14 = {StackTraceElement@14607} "org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)"
15 = {StackTraceElement@14608} "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)"
16 = {StackTraceElement@14609} "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)"
17 = {StackTraceElement@14610} "org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)"
18 = {StackTraceElement@14611} "org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"
19 = {StackTraceElement@14612} "org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)"
20 = {StackTraceElement@14613} "org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)"
21 = {StackTraceElement@14614} "org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)"
22 = {StackTraceElement@14615} "javax.servlet.http.HttpServlet.service(HttpServlet.java:634)"
23 = {StackTraceElement@14616} "org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)"
24 = {StackTraceElement@14617} "javax.servlet.http.HttpServlet.service(HttpServlet.java:741)"
25 = {StackTraceElement@14618} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)"
26 = {StackTraceElement@14619} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)"
27 = {StackTraceElement@14620} "org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)"
28 = {StackTraceElement@14621} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)"
29 = {StackTraceElement@14622} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)"
30 = {StackTraceElement@14623} "org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)"
31 = {StackTraceElement@14624} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)"
32 = {StackTraceElement@14625} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)"
33 = {StackTraceElement@14626} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)"
34 = {StackTraceElement@14627} "org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)"
35 = {StackTraceElement@14628} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)"
36 = {StackTraceElement@14629} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)"
37 = {StackTraceElement@14630} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)"
38 = {StackTraceElement@14631} "org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)"
39 = {StackTraceElement@14632} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)"
40 = {StackTraceElement@14633} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)"
41 = {StackTraceElement@14634} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)"
42 = {StackTraceElement@14635} "org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)"
43 = {StackTraceElement@14636} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)"
44 = {StackTraceElement@14637} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)"
45 = {StackTraceElement@14638} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)"
46 = {StackTraceElement@14639} "org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)"
47 = {StackTraceElement@14640} "org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)"
48 = {StackTraceElement@14641} "org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)"
49 = {StackTraceElement@14642} "org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)"
50 = {StackTraceElement@14643} "org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)"
51 = {StackTraceElement@14644} "org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)"
52 = {StackTraceElement@14645} "org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)"
53 = {StackTraceElement@14646} "org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)"
54 = {StackTraceElement@14647} "org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)"
55 = {StackTraceElement@14648} "org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)"
56 = {StackTraceElement@14649} "org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)"
57 = {StackTraceElement@14650} "org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)"
58 = {StackTraceElement@14651} "java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)"
59 = {StackTraceElement@14652} "java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)"
60 = {StackTraceElement@14653} "org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)"
61 = {StackTraceElement@14654} "java.lang.Thread.run(Thread.java:745)"

Как я могу это сделать?

...