JPQL error after upgrading to 6.4.0

I just upgraded from 6.3.4 to 6.4.0 and I’m getting a JPQL error that I didn’t receive before:

2017-02-03 17:02:42.295 ERROR [http-nio-8080-exec-11] com.haulmont.cuba.web.log.AppLog - Exception: 
java.lang.RuntimeException: Push failed
 at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:171)
 at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:146)
 at com.vaadin.ui.UI.push(UI.java:1567)
 at com.vaadin.server.VaadinSession.unlock(VaadinSession.java:1000)
 at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:43)
 at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1422)
 at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:384)
 at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:278)
 at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:187)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
 at com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:108)
 at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:95)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:745)
Caused by: com.haulmont.cuba.core.sys.jpql.JpqlSyntaxException: Errors found for input jpql:[select e from rade$RaNote e
where e.recType = "N" 
and e.tabvar = :param_tabvar
and e.recId = :param_recId]
line 1:63 no viable alternative at character '"'
 at com.haulmont.cuba.core.global.QueryParserAstBased.getQueryAnalyzer(QueryParserAstBased.java:82)
 at com.haulmont.cuba.core.global.QueryParserAstBased.getParamNames(QueryParserAstBased.java:96)
 at com.haulmont.cuba.gui.data.impl.AbstractCollectionDatasource.createDataQuery(AbstractCollectionDatasource.java:524)
 at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.beforeLoadData(CollectionDatasourceImpl.java:608)
 at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.loadData(CollectionDatasourceImpl.java:582)
 at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:146)
 at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:106)
 at com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refreshIfNotSuspended(CollectionDatasourceImpl.java:97)
 at com.haulmont.cuba.gui.data.impl.CollectionDsHelper.autoRefreshInvalid(CollectionDsHelper.java:106)
 at com.haulmont.cuba.web.gui.data.CollectionDsWrapper.size(CollectionDsWrapper.java:165)
 at com.vaadin.ui.AbstractSelect.size(AbstractSelect.java:802)
 at com.vaadin.ui.Table.doPaintContent(Table.java:3379)
 at com.vaadin.ui.Table.paintContent(Table.java:3363)
 at com.haulmont.cuba.web.toolkit.ui.CubaTable.paintContent(CubaTable.java:815)
 at com.vaadin.server.LegacyPaint.paint(LegacyPaint.java:65)
 at com.vaadin.server.communication.LegacyUidlWriter.write(LegacyUidlWriter.java:82)
 at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:143)
 at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:168)
 ... 34 more

My code is:


LoadContext<RaNote> loadContext = LoadContext.create(RaNote.class)
  .setQuery(LoadContext.createQuery("select c from rade$RaNote c where c.recType = 'N' and c.tabvar = :tabvar and c.recId = :recId")
  .setParameter("tabvar", "OFFER")
  .setParameter("recId", currentOffer.getId())
 )
.setView(View.LOCAL);

Hi,

In the platform version 6.4 query validator was improved.

The error says that some query contains double quotes.

Your query (under “My code is”) differs from the specified in the error message:


Caused by: com.haulmont.cuba.core.sys.jpql.JpqlSyntaxException: Errors found for input jpql:[select e from rade$RaNote e
where e.recType = "N" 
and e.tabvar = :param_tabvar
and e.recId = :param_recId]
line 1:63 no viable alternative at character '"'

So it seems, that the error occurs while handling some another query.

For instance, I get the same exception if a new filter condition has double quotes:

CustomQuery

Thank you, correct as usual! In my case, the error was in the Datasource definition in my Screen XML. Thanks!