Menu

Fallo con select íntegro

JOSE ELIAS
2015-10-08
2015-10-14
  • JOSE ELIAS

    JOSE ELIAS - 2015-10-08

    Hola a todos,

    Necesito un Tab que resultado de la suma de importe agrupados por un campo, pero no hay forma de hacerlo funcionar. Una vez que compruebo que la select está bien hecha obtengo el mensaje de error "No hay un editor web apto...." para cada una de las properties definidas. Lo reducido al mínimo para comprobar donde falla ...

    @Tab(name="SaldosEh",
    properties="concepto, importePosicion",
    baseCondition="SELECT e.concepto.nombre, e.importePosicion "
    + "FROM DetalleDocumentoContable e")

    No se si alguien ve mal algo en este Tab, pq salta el error "No existe un editor web apto para la propiedad concepto"

     
  • JOSE ELIAS

    JOSE ELIAS - 2015-10-09

    Voy avanzando, a ve si llego al sum() agrupado. Lo voy a hacer con sub consultas. La lectura de registros para la agrupación posterior ya la tengo.

    @Tab(name="SaldosEh",
    properties="concepto.oid, importePosicion, concepto.oid, importePosicion ",
    baseCondition="SELECT e.concepto.oid, e.importePosicion, g.concepto.oid, g.importePosicion "
    + "FROM DetalleDocumentoContable e, DetalleDocumentoContable g "
    + "WHERE e.concepto.oid = g.concepto.partida.oid ")

     
  • JOSE ELIAS

    JOSE ELIAS - 2015-10-11

    Hola, a ver si me puede alguien responder a esta duda, por favor...

    Al usar una select íntegra, con una función de agregado y group by, se lanza un error el que se obliga a usar el campo clave en un group by, pero claro así no se agrupan los resultados, ¿Qué puede ser ?
    He intentado el recurso de los SELECT anidados, pero parece que JPA no admite SELECT * FROM ( ... ) AS A

    "SELECT SUM(e.importePosicion) AS saldo "
    + "FROM DetalleDocumentoContable e "
    + "WHERE e.documentoCompensacion.oid IS NULL "

     
  • JOSE ELIAS

    JOSE ELIAS - 2015-10-11

    Siguiendo con este hilo: https://sourceforge.net/p/openxava/discussion/419690/thread/0b85bb27/

    He creado una vista con los valores agregados como los necesito, pero ¿cómo hago para llamar a la vista desde un módulo?

     
  • Javier Paniza

    Javier Paniza - 2015-10-12

    Hola José:

    Si tienes una vista de la base datos sólo tienes que crear una entidad JPA para mapearla y ya tienes sel módulo. Es decir, trata la vista como si fuera una tabla más.


    Ayuda a otros en este foro como yo te ayudo a ti.

     
  • JOSE ELIAS

    JOSE ELIAS - 2015-10-13

    Hola JP: No hay forma, salta una traza que te pego después de las definiciones.Básicamente dice que no encuentra la vista.

    Tengo definida una vista vsaldoseh, con los campos: --------------------->

             empresa_oid, sitioHeredao_oid, persona_oid, concepto_oid, saldo.
    

    Tengo el módulo transient así definido: --------------------->

    @View(members="empresa; sitioHeredado; persona; concepto; saldo")
    @Tab(properties="empresa.nombre, sitioHeredado.nombre, persona.nombre, concepto.nombre, saldo")
    public class vsaldoseh {

    @ManyToOne
    @ReferenceView("Simple")
    private Empresa empresa;
    
    @ManyToOne
    @ReferenceView("Simple")
    private Sitio sitioHeredado;
    
    @ManyToOne
    @ReferenceView("Simple")
    private Persona persona;
    
    @ManyToOne
    @ReferenceView("Simple")
    private ConceptoRecaudacion  concepto;
    
    @Stereotype("DINERO")
    @Column(length=10)
    private BigDecimal saldo;
    
    ////////////// getter + setter //////////////////////////////////////////
    

    }

    La declaración en aplicacion.xml : --------------------->

    <modulo nombre="vsaldoseh">
        <var-entorno nombre="XAVA_LIST_ACTION" valor=""/> 
        <modelo nombre="vsaldoseh"/>
        <controlador-modo nombre="ListOnly"/>
        <controlador nombre="ExtendedPrint"/>  
        <controlador nombre="Charts"/>                  
    </modulo>
    

    Esta es la traza de error: --------------------->

    GRAVE: Fallo al ejecutar SELECT e_empresa.nombre, e_sitioHeredado.nombre, e_persona.nombre, e_concepto.nombre, e.saldo from vsaldoseh e left join e.empresa e_empresa left join e.sitioHeredado e_sitioHeredado left join e.persona e_persona left join e.concepto e_concepto
    java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: vsaldoseh is not mapped [SELECT e_empresa.nombre, e_sitioHeredado.nombre, e_persona.nombre, e_concepto.nombre, e.saldo from vsaldoseh e left join e.empresa e_empresa left join e.sitioHeredado e_sitioHeredado left join e.persona e_persona left join e.concepto e_concepto]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:331)
    at org.openxava.jpa.impl.EntityManagerDecorator.createQuery(EntityManagerDecorator.java:124)
    at org.openxava.tab.impl.JPATabProvider.nextBlock(JPATabProvider.java:153)
    at org.openxava.tab.impl.JPATabProvider.nextChunk(JPATabProvider.java:139)
    at org.openxava.tab.impl.EntityTabDataProvider.nextChunk(EntityTabDataProvider.java:34)
    at org.openxava.tab.impl.EntityTab.nextChunk(EntityTab.java:249)
    at org.openxava.tab.impl.TableModelBean.getRow(TableModelBean.java:121)
    at org.openxava.tab.impl.TableModelBean.getValueAt(TableModelBean.java:171)
    at org.openxava.tab.impl.XTableModelDecoratorBase.getValueAt(XTableModelDecoratorBase.java:62)
    at org.openxava.tab.impl.HiddenXTableModel.getValueAt(HiddenXTableModel.java:69)
    at org.openxava.tab.Tab.createTableModel(Tab.java:396)
    at org.openxava.tab.Tab.getTableModel(Tab.java:368)
    at org.apache.jsp.xava.editors.listEditor_jsp._jspService(listEditor_jsp.java:1083)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    at org.apache.jsp.xava.list_jsp._jspService(list_jsp.java:81)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    at org.apache.jsp.xava.core_jsp._jspService(core_jsp.java:301)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    at org.apache.jsp.xava.module_jsp._jspService(module_jsp.java:490)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    at org.apache.jsp.naviox.index_jsp._jspService(index_jsp.java:213)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
    at com.openxava.naviox.web.NaviOXServlet.doGet(NaviOXServlet.java:30)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at com.openxava.naviox.web.NaviOXFilter.doFilter(NaviOXFilter.java:61)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

     
  • JOSE ELIAS

    JOSE ELIAS - 2015-10-14

    Ya está. El móduo no tiene que ser transient.
    He declarado un módulo con una clave compuesta y ha funcionar. Pego el código si le vale a alguien:

    @Entity
    @IdClass(vsaldosehKey.class) //clave compuesta
    @View(members="empresa; sitioHeredado; persona; concepto; saldo")
    @Tab(properties="empresa.nombre, sitioHeredado.nombre, persona.nombre, concepto.nombre, saldo")
    public class vsaldoseh {

    @Id
    @ManyToOne
    @ReferenceView("Simple")
    private Empresa empresa;
    
    @Id
    @ManyToOne
    @ReferenceView("Simple")
    private Sitio sitioHeredado;
    
    @Id
    @ManyToOne
    @ReferenceView("Simple")
    private Persona persona;
    
    @Id
    @ManyToOne
    @ReferenceView("Simple")
    private ConceptoRecaudacion  concepto;
    
    @Stereotype("DINERO")
    @Column(length=10)
    private BigDecimal saldo;
    
    ////////////// getter + setter //////////////////////////////////////////
    
     

Log in to post a comment.