Menu

Using XPersistence.getManager() .createQuery in an Action

2018-01-12
2018-01-16
  • David Fisher

    David Fisher - 2018-01-12

    I am defining an action to be run from the detail view. Inside the action I do the following:

        Object AgentName = getView().getValue("description");
        Query query = XPersistence.getManager()
                   .createQuery( "select connname_description from Agent " +
                 "where description = '" + ((String) AgentName) + "'");
        String ClientAgentConnName = (String) query.getSingleResult();
    
        I have done this before but inside a Calculator.  
        When I try to run the action I get this popup message:
        Impossible to execute Create agents action: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode \-[IDENT] IdentNode: 'connname_description' {originalText=connname_description}
    

    and in the console I get this:
    Jan 12, 2018 3:26:17 PM org.openxava.controller.ModuleManager manageRegularException
    SEVERE: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode
    -[IDENT] IdentNode: 'connname_description' {originalText=connname_description}

    java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode
    -[IDENT] IdentNode: 'connname_description' {originalText=connname_description}

    at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:174)
    at org.hibernate.hql.internal.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:937)
    at org.hibernate.hql.internal.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:705)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:665)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:131)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:93)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328)
    at org.openxava.jpa.impl.EntityManagerDecorator.createQuery(EntityManagerDecorator.java:124)
    at com.kwivira.EAD.actions.CreateAgents.execute(CreateAgents.java:66)
    at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:562)
    at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:460)
    at org.openxava.controller.ModuleManager.execute(ModuleManager.java:421)
    at org.apache.jsp.xava.execute_jsp._jspService(execute_jsp.java:195)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
    at org.openxava.web.servlets.Servlets.getURIAsStream(Servlets.java:72)
    at org.openxava.web.dwr.Module.getURIAsStream(Module.java:239)
    at org.openxava.web.dwr.Module.request(Module.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
    at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
    at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
    at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
    at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    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.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    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:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    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:409)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    

    Jan 12, 2018 3:26:17 PM org.openxava.controller.ModuleManager execute
    FINE: Execute CreateAgents.CreateAgents=0 ms
    Jan 12, 2018 3:26:17 PM org.openxava.web.dwr.Module request
    FINE: Request time=18 ms

    I am not sure what the problem is as I have done this exact thing in a Calculator. Any help would be appreciated.

    David Fisher

     
  • Javier Paniza

    Javier Paniza - 2018-01-15

    Hi David,

    In a JPA query you have to use properties names, not column names. Maybe that is the problem, I don't know. Put here the complete code for Agent, so I can give you a more acurate tip.


    Help others in this forum as I help you.

     
  • David Fisher

    David Fisher - 2018-01-16

    Thanks, I found the issue. The query should look like this:

    Object AgentName = getView().getValue("description");
    Query query = XPersistence.getManager()
    .createQuery( "select connname.description from Agent " +
    "where description = '" + ((String) AgentName) + "'");
    String ClientAgentConnName = (String) query.getSingleResult();

    Note that the database says connname_description but I have to put connname.description in the query.
    
     

Log in to post a comment.