error running JPQL in service #207

Hi
I am getting the following errors:


QueryErrorsFoundException: Errors found
CommonErrorNode[<unexpected: [@13,53:53='.',<60>,1:53], resync=w.productionStage.id =>]
CommonErrorNode[<unexpected: [@23,83:83='.',<60>,1:83], resync=w.article.id =>]

Error detail:


com.haulmont.cuba.core.global.RemoteException:
---
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cuba_QueryParser' defined in URL [jar:file:/Users/Mortoza/studio-projects/inteaccgms/build/tomcat/webapps/app-core/WEB-INF/lib/cuba-global-6.0.9.jar!/com/haulmont/cuba/core/global/QueryParserAstBased.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.haulmont.cuba.core.global.QueryParserAstBased]: Constructor threw exception; nested exception is com.haulmont.cuba.core.sys.jpql.QueryErrorsFoundException: Errors found
CommonErrorNode[<unexpected: [@13,53:53='.',<60>,1:53], resync=w.productionStage.id =>]
CommonErrorNode[<unexpected: [@23,83:83='.',<60>,1:83], resync=w.article.id =>]
---
org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.haulmont.cuba.core.global.QueryParserAstBased]: Constructor threw exception; nested exception is com.haulmont.cuba.core.sys.jpql.QueryErrorsFoundException: Errors found
CommonErrorNode[<unexpected: [@13,53:53='.',<60>,1:53], resync=w.productionStage.id =>]
CommonErrorNode[<unexpected: [@23,83:83='.',<60>,1:83], resync=w.article.id =>]
---
com.haulmont.cuba.core.sys.jpql.QueryErrorsFoundException: Errors found
CommonErrorNode[<unexpected: [@13,53:53='.',<60>,1:53], resync=w.productionStage.id =>]
CommonErrorNode[<unexpected: [@23,83:83='.',<60>,1:83], resync=w.article.id =>]
    at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:73)
    at sun.reflect.GeneratedMethodAccessor83.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
    at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
    at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:68)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy166.createOrInsertWageRate(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.haulmont.cuba.core.sys.remoting.LocalServiceInvokerImpl.invoke(LocalServiceInvokerImpl.java:77)
    at com.haulmont.cuba.web.sys.remoting.LocalServiceProxy$LocalServiceInvocationHandler.invoke(LocalServiceProxy.java:123)
    at com.sun.proxy.$Proxy50.createOrInsertWageRate(Unknown Source)
    at com.inteacc.gms.gui.productionwagerate.ProductionWageRateBrowse.init(ProductionWageRateBrowse.java:89)
    at com.haulmont.cuba.gui.WindowManager.init(WindowManager.java:731)
    at com.haulmont.cuba.gui.WindowManager.initWrapperFrame(WindowManager.java:722)
    at com.haulmont.cuba.gui.WindowManager.createWindow(WindowManager.java:176)
    at com.haulmont.cuba.gui.WindowManager.openWindow(WindowManager.java:345)
    at com.haulmont.cuba.gui.config.MenuCommand.execute(MenuCommand.java:87)
    at com.haulmont.cuba.web.sys.MenuBuilder$1.menuSelected(MenuBuilder.java:153)
    at com.vaadin.ui.MenuBar.changeVariables(MenuBar.java:207)
    at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:508)
    at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:327)
    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:202)
    at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:95)
    at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.lambda$synchronizedHandleRequest$67(CubaVaadinServletService.java:290)
    at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler$$Lambda$17/760298785.call(Unknown Source)
    at com.haulmont.cuba.web.sys.CubaVaadinServletService.withUserSession(CubaVaadinServletService.java:171)
    at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.synchronizedHandleRequest(CubaVaadinServletService.java:290)
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1408)
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:356)
    at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:226)
    at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:149)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:100)
    at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:87)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    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:142)
    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:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
    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)

Bean contents


@Service(ProductionService.NAME)
public class ProductionServiceBean implements ProductionService {

    @Inject
    private Persistence persistence;

    @Inject
    private Metadata metadata;


    @Override
    public void createOrInsertWageRate() {
        try (Transaction tx = persistence.createTransaction()) {
            // Search for existing customers with the given name
            TypedQuery<FactoryProductionStage> query = persistence.getEntityManager().createQuery(
                    "select c from inteaccgms$FactoryProductionStage c", FactoryProductionStage.class);
            //query.setParameter("name", name);

            List<FactoryProductionStage> stages = query.getResultList();

            for (FactoryProductionStage stage : stages) {
                TypedQuery<Article> queryArticle = persistence.getEntityManager().createQuery(
                        "select a from inteaccgms$Article a", Article.class);

                List<Article> articles = queryArticle.getResultList();
                for (Article article : articles) {
                    // Search for existing ProductionWageRate with the given Article and Production Stage
                    TypedQuery<ProductionWageRate> queryWage = persistence.getEntityManager().createQuery(
                            "select w from inteaccgms$ProductionWageRate w where w.productionStage.id = :?1" +
                                    "and w.article.id = :?2", ProductionWageRate.class);
                    queryWage.setParameter(1, stage.getId());
                    queryWage.setParameter(2, article.getId());

                    List<ProductionWageRate> rates = queryWage.getResultList();
                    if (rates.size() == 0) {
                        ProductionWageRate productionWageRate = metadata.create(ProductionWageRate.class);
                        productionWageRate.setFactoryProductionStage(stage);
                        productionWageRate.setArticle(article);
                        productionWageRate.setPieceRate(new BigDecimal(0));
                        persistence.getEntityManager().persist(productionWageRate);
                    }
                }
            }

            tx.commit();
        }

    }

}

Controller file content:


public class ProductionWageRateBrowse extends AbstractLookup {
.......

    @Override
    public void init(Map<String, Object> params) {
        productionWageRatesDs.addItemChangeListener(e -> {
            if (e.getItem() != null) {
                ProductionWageRate reloadedItem = dataSupplier.reload(e.getDs().getItem(), productionWageRateDs.getView());
                productionWageRateDs.setItem(reloadedItem);
            }
        });

        productionWageRatesTable.addAction(new CreateAction(productionWageRatesTable) {
            @Override
            protected void internalOpenEditor(CollectionDatasource datasource, Entity newItem, Datasource parentDs, Map<String, Object> params) {
                productionWageRatesTable.setSelected(Collections.emptyList());
                productionWageRateDs.setItem((ProductionWageRate) newItem);
                enableEditControls(true);
            }
        });

        productionWageRatesTable.addAction(new EditAction(productionWageRatesTable) {
            @Override
            protected void internalOpenEditor(CollectionDatasource datasource, Entity existingItem, Datasource parentDs, Map<String, Object> params) {
                if (productionWageRatesTable.getSelected().size() == 1) {
                    enableEditControls(false);
                }
            }
        });

        productionWageRatesTableRemove.setAfterRemoveHandler(removedItems -> productionWageRateDs.setItem(null));

        disableEditControls();

        productionService.createOrInsertWageRate();

    }

You forgot space in the query:
“select w from inteaccgms$ProductionWageRate w where w.productionStage.id = :?1” +
“and w.article.id = :?2”, ProductionWageRate.class);

Thanks.