Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-1228

EJB-QL produces incorrect SQL

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • JBossAS-4.0.4.GA
    • JBossAS-4.0.0 Final
    • CMP service
    • None

    Description

      SourceForge Submitter: cstach .
      It seems that it's forgetting to put in the relation table...

      ejb-jar.xml snippets:

      <query>
      <description><![CDATA[]]></description>
      <query-method>
      <method-
      name>ejbSelectRemainingThingCount</method-name>
      <method-params>
      <method-param>java.lang.Long</method-
      param>
      </method-params>
      </query-method>
      <ejb-ql><![CDATA[SELECT COUNT(DISTINCT c)
      FROM item o, thing c, IN (o.historyList) AS mh WHERE
      o.id = ?1 AND c MEMBER OF o.thingList AND c <>
      mh.thingInfo.thing]]></ejb-ql>
      </query>

      [...]

      <ejb-relation >
      <ejb-relation-name>Thing-Thing Info</ejb-
      relation-name>

      <ejb-relationship-role >
      <ejb-relationship-role-name>thing-info-belongs-
      to-thing</ejb-relationship-role-name>
      <multiplicity>Many</multiplicity>
      <cascade-delete/>
      <relationship-role-source >
      <ejb-name>ThingInfo</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>thing</cmr-field-name>
      </cmr-field>
      </ejb-relationship-role>

      <ejb-relationship-role >
      <ejb-relationship-role-name>thing-has-thing-
      infos</ejb-relationship-role-name>
      <multiplicity>One</multiplicity>
      <relationship-role-source >
      <ejb-name>Thing</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>thingInfoList</cmr-field-
      name>
      <cmr-field-type>java.util.Set</cmr-field-
      type>
      </cmr-field>
      </ejb-relationship-role>

      </ejb-relation>

      <ejb-relation >
      <ejb-relation-name>Thing Info-History</ejb-
      relation-name>

      <ejb-relationship-role >
      <ejb-relationship-role-name>history-belongs-to-
      thing-info</ejb-relationship-role-name>
      <multiplicity>Many</multiplicity>
      <cascade-delete/>
      <relationship-role-source >
      <ejb-name>History</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>thingInfo</cmr-field-name>
      </cmr-field>
      </ejb-relationship-role>

      <ejb-relationship-role >
      <ejb-relationship-role-name>thing-info-has-
      history</ejb-relationship-role-name>
      <multiplicity>One</multiplicity>
      <relationship-role-source >
      <ejb-name>ThingInfo</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>historyList</cmr-field-name>
      <cmr-field-type>java.util.Set</cmr-field-
      type>
      </cmr-field>
      </ejb-relationship-role>

      </ejb-relation>

      <ejb-relation >
      <ejb-relation-name>Item-Thing</ejb-relation-
      name>

      <ejb-relationship-role >
      <ejb-relationship-role-name>thing-belongs-to-
      items</ejb-relationship-role-name>
      <multiplicity>Many</multiplicity>
      <relationship-role-source >
      <ejb-name>Thing</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>itemList</cmr-field-name>
      <cmr-field-type>java.util.Set</cmr-field-
      type>
      </cmr-field>
      </ejb-relationship-role>

      <ejb-relationship-role >
      <ejb-relationship-role-name>item-has-
      things</ejb-relationship-role-name>
      <multiplicity>Many</multiplicity>
      <relationship-role-source >
      <ejb-name>Item</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>thingList</cmr-field-name>
      <cmr-field-type>java.util.Set</cmr-field-
      type>
      </cmr-field>
      </ejb-relationship-role>

      </ejb-relation>

      jbosscmp-jdbc.xml:

      <ejb-relation>
      <ejb-relation-name>Thing-Thing Info</ejb-relation-
      name>

      <ejb-relationship-role>
      <ejb-relationship-role-name>thing-info-belongs-
      to-thing</ejb-relationship-role-name>
      <fk-constraint>true</fk-constraint>
      <key-fields/>

      <batch-cascade-delete/>
      </ejb-relationship-role>
      <ejb-relationship-role>
      <ejb-relationship-role-name>thing-has-thing-
      infos</ejb-relationship-role-name>
      <key-fields>
      <key-field>
      <field-name>id</field-name>
      <column-name>thing_id</column-name>
      </key-field>
      </key-fields>

      </ejb-relationship-role>
      </ejb-relation>

      <ejb-relation>
      <ejb-relation-name>Item-Thing</ejb-relation-name>
      <relation-table-mapping>
      <table-name>thing_to_item</table-name>
      </relation-table-mapping>

      <ejb-relationship-role>
      <ejb-relationship-role-name>thing-belongs-to-
      items</ejb-relationship-role-name>
      <fk-constraint>true</fk-constraint>
      <key-fields>
      <key-field>
      <field-name>id</field-name>
      <column-name>thing_id</column-name>
      </key-field>
      </key-fields>

      </ejb-relationship-role>
      <ejb-relationship-role>
      <ejb-relationship-role-name>item-has-
      things</ejb-relationship-role-name>
      <fk-constraint>true</fk-constraint>
      <key-fields>
      <key-field>
      <field-name>id</field-name>
      <column-name>item_id</column-name>
      </key-field>
      </key-fields>

      </ejb-relationship-role>
      </ejb-relation>

      <ejb-relation>
      <ejb-relation-name>Item-History</ejb-relation-
      name>
      <relation-table-mapping>
      <table-name>mail_history_to_item</table-name>
      </relation-table-mapping>

      <ejb-relationship-role>
      <ejb-relationship-role-name>item-has-
      history</ejb-relationship-role-name>
      <fk-constraint>true</fk-constraint>
      <key-fields>
      <key-field>
      <field-name>id</field-name>
      <column-name>item_id</column-name>
      </key-field>
      </key-fields>

      </ejb-relationship-role>
      <ejb-relationship-role>
      <ejb-relationship-role-name>history-belongs-to-
      item</ejb-relationship-role-name>
      <fk-constraint>true</fk-constraint>
      <key-fields>
      <key-field>
      <field-name>id</field-name>
      <column-name>mail_history_id</column-
      name>
      </key-field>
      </key-fields>

      </ejb-relationship-role>
      </ejb-relation>

      <ejb-relation>
      <ejb-relation-name>Thing Info-History</ejb-relation-
      name>

      <ejb-relationship-role>
      <ejb-relationship-role-name>history-belongs-to-
      thing-info</ejb-relationship-role-name>
      <fk-constraint>true</fk-constraint>
      <key-fields/>

      <batch-cascade-delete/>
      </ejb-relationship-role>
      <ejb-relationship-role>
      <ejb-relationship-role-name>thing-info-has-
      history</ejb-relationship-role-name>
      <key-fields>
      <key-field>
      <field-name>id</field-name>
      <column-name>thing_info_id</column-name>
      </key-field>
      </key-fields>

      </ejb-relationship-role>
      </ejb-relation>

      Exception and stack trace:

      2004-11-24 11:24:23,609 DEBUG
      [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Item#ej
      bSelectRemainingThingCount] Executing SQL: SELECT
      count(DISTINCT t0_c.id) FROM item t1_o, thing t0_c,
      history t5_mh, history_to_item
      t8_o_historyList_RELATION_TA, thing_info
      t6_mh_thingInfo, thing t4_mh_thingInfo_thing WHERE
      ((t1_o.id = ? AND
      (t3_o_thingList_RELATION_TABLE.item_id IS NOT NULL
      AND t0_c.id=t3_o_thingList_RELATION_TABLE.thing_id)
      AND ( NOT (t0_c.id=t4_mh_thingInfo_thing.id)) AND
      t5_mh.thing_info_id=t6_mh_thingInfo.id AND
      t6_mh_thingInfo.thing_id=t4_mh_thingInfo_thing.id))
      AND t1_o.id=t8_o_historyList_RELATION_TA.history_id
      AND t5_mh.id=t8_o_historyList_RELATION_TA.item_id
      2004-11-24 11:24:23,703 ERROR
      [org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Item#ej
      bSelectRemainingThingCount] Find failed
      java.sql.SQLException: Base table or view not found
      message from server: "Unknown
      table 't3_o_thingList_RELATION_TABLE' in where clause"
      at com.mysql.jdbc.MysqlIO.checkErrorPacket
      (MysqlIO.java:1997)
      at com.mysql.jdbc.MysqlIO.sendCommand
      (MysqlIO.java:1167)
      at com.mysql.jdbc.MysqlIO.sqlQueryDirect
      (MysqlIO.java:1278)
      at com.mysql.jdbc.Connection.execSQL
      (Connection.java:2247)
      at
      com.mysql.jdbc.PreparedStatement.executeQuery
      (PreparedStatement.java:1586)
      at
      org.jboss.resource.adapter.jdbc.WrappedPreparedStatem
      ent.executeQuery(WrappedPreparedStatement.java:296)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryComma
      nd.execute(JDBCAbstractQueryCommand.java:206)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryComma
      nd.execute(JDBCAbstractQueryCommand.java:128)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCSelectorBridge.
      execute(JDBCSelectorBridge.java:99)
      at
      org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCSelectorBridge.i
      nvoke(JDBCSelectorBridge.java:70)
      at
      org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHa
      ndler.invoke(EntityBridgeInvocationHandler.java:91)
      at org.jboss.proxy.compiler.Runtime.invoke
      (Runtime.java:62)
      at
      com.xxxxx.xxx.ejb.ItemCMP$Proxy.ejbSelectRemainingThin
      gCount(<generated>)
      at
      com.xxxxx.xxx.ejb.ItemEJB.selectRemainingThingCount
      (ItemEJB.java:702)
      at
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native
      Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke
      (NativeMethodAccessorImpl.java:39)
      at
      sun.reflect.DelegatingMethodAccessorImpl.invoke
      (DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke
      (Method.java:324)
      at org.jboss.invocation.Invocation.performCall
      (Invocation.java:345)
      at
      org.jboss.ejb.EntityContainer$ContainerInterceptor.invoke
      (EntityContainer.java:1174)
      at
      org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.in
      voke(JDBCRelationInterceptor.java:72)
      at
      org.jboss.ejb.plugins.EntitySynchronizationInterceptor.inv
      oke(EntitySynchronizationInterceptor.java:273)
      at
      org.jboss.resource.connectionmanager.CachedConnection
      Interceptor.invoke
      (CachedConnectionInterceptor.java:185)
      at
      org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke
      (EntityReentranceInterceptor.java:111)
      at
      org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke
      (EntityInstanceInterceptor.java:211)
      at
      org.jboss.ejb.plugins.EntityLockInterceptor.invoke
      (EntityLockInterceptor.java:89)
      at
      org.jboss.ejb.plugins.EntityCreationInterceptor.invoke
      (EntityCreationInterceptor.java:53)
      at
      org.jboss.ejb.plugins.CallValidationInterceptor.invoke
      (CallValidationInterceptor.java:48)
      at
      org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext
      (AbstractTxInterceptor.java:105)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransacti
      ons(TxInterceptorCMT.java:316)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.invoke
      (TxInterceptorCMT.java:149)
      at
      org.jboss.ejb.plugins.SecurityInterceptor.invoke
      (SecurityInterceptor.java:128)
      at org.jboss.ejb.plugins.LogInterceptor.invoke
      (LogInterceptor.java:191)
      at
      org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invok
      e(ProxyFactoryFinderInterceptor.java:122)
      at org.jboss.ejb.EntityContainer.internalInvoke
      (EntityContainer.java:514)
      at org.jboss.ejb.Container.invoke
      (Container.java:854)
      at
      org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke
      (BaseLocalProxyFactory.java:413)
      at org.jboss.ejb.plugins.local.EntityProxy.invoke
      (EntityProxy.java:44)
      at $Proxy956.selectRemainingThingCount
      (Unknown Source)
      at
      com.xxxxx.xxx.ejb.MDFControllerEJB.makeItemList
      (MDFControllerEJB.java:3540)
      at
      com.xxxxx.xxx.ejb.MDFControllerEJB.getFooItemList
      (MDFControllerEJB.java:3027)
      at
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native
      Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke
      (NativeMethodAccessorImpl.java:39)
      at
      sun.reflect.DelegatingMethodAccessorImpl.invoke
      (DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke
      (Method.java:324)
      at org.jboss.invocation.Invocation.performCall
      (Invocation.java:345)
      at
      org.jboss.ejb.StatelessSessionContainer$ContainerInterce
      ptor.invoke(StatelessSessionContainer.java:214)
      at
      org.jboss.resource.connectionmanager.CachedConnection
      Interceptor.invoke
      (CachedConnectionInterceptor.java:185)
      at
      org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor
      .invoke(StatelessSessionInstanceInterceptor.java:113)
      at
      org.jboss.webservice.server.ServiceEndpointInterceptor.i
      nvoke(ServiceEndpointInterceptor.java:51)
      at
      org.jboss.ejb.plugins.CallValidationInterceptor.invoke
      (CallValidationInterceptor.java:48)
      at
      org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext
      (AbstractTxInterceptor.java:105)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransacti
      ons(TxInterceptorCMT.java:316)
      at
      org.jboss.ejb.plugins.TxInterceptorCMT.invoke
      (TxInterceptorCMT.java:149)
      at
      org.jboss.ejb.plugins.SecurityInterceptor.invoke
      (SecurityInterceptor.java:128)
      at org.jboss.ejb.plugins.LogInterceptor.invoke
      (LogInterceptor.java:191)
      at
      org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invok
      e(ProxyFactoryFinderInterceptor.java:122)
      at org.jboss.ejb.SessionContainer.internalInvoke
      (SessionContainer.java:624)
      at org.jboss.ejb.Container.invoke
      (Container.java:854)
      at
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native
      Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke
      (NativeMethodAccessorImpl.java:39)
      at
      sun.reflect.DelegatingMethodAccessorImpl.invoke
      (DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke
      (Method.java:324)
      at
      org.jboss.mx.interceptor.ReflectedDispatcher.invoke
      (ReflectedDispatcher.java:141)
      at org.jboss.mx.server.Invocation.dispatch
      (Invocation.java:80)
      at org.jboss.mx.server.Invocation.invoke
      (Invocation.java:72)
      at
      org.jboss.mx.server.AbstractMBeanInvoker.invoke
      (AbstractMBeanInvoker.java:242)
      at org.jboss.mx.server.MBeanServerImpl.invoke
      (MBeanServerImpl.java:642)
      at
      org.jboss.invocation.local.LocalInvoker$MBeanServerActio
      n.invoke(LocalInvoker.java:155)
      at
      org.jboss.invocation.local.LocalInvoker.invoke
      (LocalInvoker.java:104)
      at
      org.jboss.invocation.MarshallingInvokerInterceptor.invoke
      (MarshallingInvokerInterceptor.java:55)
      at
      org.jboss.proxy.TransactionInterceptor.invoke
      (TransactionInterceptor.java:46)
      at org.jboss.proxy.SecurityInterceptor.invoke
      (SecurityInterceptor.java:55)
      at
      org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke
      (StatelessSessionInterceptor.java:97)
      at org.jboss.proxy.ClientContainer.invoke
      (ClientContainer.java:86)
      at $Proxy961.getFooItemList(Unknown Source)
      at
      com.xxxxx.xxx.controller.MDFControllerWebImpl.getFooIte
      mList(MDFControllerWebImpl.java:1860)
      at
      com.xxxxx.xxx.controller.actions.ItemList.execute
      (ItemList.java:127)
      at
      org.apache.struts.action.RequestProcessor.processAction
      Perform(RequestProcessor.java:421)
      at
      org.apache.struts.action.RequestProcessor.process
      (RequestProcessor.java:226)
      at
      org.apache.struts.action.ActionServlet.process
      (ActionServlet.java:1164)
      at org.apache.struts.action.ActionServlet.doGet
      (ActionServlet.java:397)
      at javax.servlet.http.HttpServlet.service
      (HttpServlet.java:697)
      at javax.servlet.http.HttpServlet.service
      (HttpServlet.java:810)
      at
      org.apache.catalina.core.ApplicationFilterChain.internalDo
      Filter(ApplicationFilterChain.java:237)
      at
      org.apache.catalina.core.ApplicationFilterChain.doFilter
      (ApplicationFilterChain.java:157)
      at
      org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter
      (ReplyHeaderFilter.java:75)
      at
      org.apache.catalina.core.ApplicationFilterChain.internalDo
      Filter(ApplicationFilterChain.java:186)
      at
      org.apache.catalina.core.ApplicationFilterChain.doFilter
      (ApplicationFilterChain.java:157)
      at
      org.apache.catalina.core.StandardWrapperValve.invoke
      (StandardWrapperValve.java:214)
      at
      org.apache.catalina.core.StandardValveContext.invokeNe
      xt(StandardValveContext.java:104)
      at
      org.apache.catalina.core.StandardPipeline.invoke
      (StandardPipeline.java:520)
      at
      org.apache.catalina.core.StandardContextValve.invokeInt
      ernal(StandardContextValve.java:198)
      at
      org.apache.catalina.core.StandardContextValve.invoke
      (StandardContextValve.java:152)
      at
      org.apache.catalina.core.StandardValveContext.invokeNe
      xt(StandardValveContext.java:104)
      at
      org.jboss.web.tomcat.security.CustomPrincipalValve.invok
      e(CustomPrincipalValve.java:44)
      at
      org.apache.catalina.core.StandardValveContext.invokeNe
      xt(StandardValveContext.java:102)
      at
      org.jboss.web.tomcat.security.SecurityAssociationValve.i
      nvoke(SecurityAssociationValve.java:169)
      at
      org.apache.catalina.core.StandardValveContext.invokeNe
      xt(StandardValveContext.java:102)
      at
      org.apache.catalina.core.StandardPipeline.invoke
      (StandardPipeline.java:520)
      at
      org.apache.catalina.core.StandardHostValve.invoke
      (StandardHostValve.java:137)
      at
      org.apache.catalina.core.StandardValveContext.invokeNe
      xt(StandardValveContext.java:104)
      at
      org.apache.catalina.valves.ErrorReportValve.invoke
      (ErrorReportValve.java:118)
      at
      org.apache.catalina.core.StandardValveContext.invokeNe
      xt(StandardValveContext.java:102)
      at
      org.apache.catalina.core.StandardPipeline.invoke
      (StandardPipeline.java:520)
      at
      org.apache.catalina.core.StandardEngineValve.invoke
      (StandardEngineValve.java:109)
      at
      org.apache.catalina.core.StandardValveContext.invokeNe
      xt(StandardValveContext.java:104)
      at
      org.apache.catalina.core.StandardPipeline.invoke
      (StandardPipeline.java:520)
      at
      org.apache.catalina.core.ContainerBase.invoke
      (ContainerBase.java:929)
      at
      org.apache.coyote.tomcat5.CoyoteAdapter.service
      (CoyoteAdapter.java:160)
      at
      org.apache.coyote.http11.Http11Processor.process
      (Http11Processor.java:799)
      at
      org.apache.coyote.http11.Http11Protocol$Http11Connec
      tionHandler.processConnection(Http11Protocol.java:705)
      at
      org.apache.tomcat.util.net.TcpWorkerThread.runIt
      (PoolTcpEndpoint.java:577)
      at
      org.apache.tomcat.util.threads.ThreadPool$ControlRunna
      ble.run(ThreadPool.java:683)
      at java.lang.Thread.run(Thread.java:534)

      Attachments

        Activity

          People

            olubyans@redhat.com Alexey Loubyansky
            sourceforge-user SourceForge legacy user (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: