Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Operation type 'fetch' not supported by this DataSource

    Using hibernate Spring integration with SmartClientPro and SmartGWTPro 2.3
    Any help in this regard :
    1.Operation type 'fetch' not supported by this DataSource
    Server log
    Code:
    java.lang.Exception: Operation type 'fetch' not supported by this DataSource (callrt_vaDataSourceFields)
    	at com.isomorphic.datasource.DataSource.notSupported(DataSource.java:1534)
    	at com.isomorphic.datasource.DataSource.executeFetch(DataSource.java:1474)
    	at com.isomorphic.datasource.DataSource.execute(DataSource.java:782)
    	at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:721)
    	at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
    	at com.isomorphic.application.AppBase.execute(AppBase.java:491)
    	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1382)
    	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:155)
    	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:106)
    	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:324)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    vaDataSourceDS.ds.xml

    Code:
    <DataSource ID="callrt_vaDataSourceFields" serverType="generic">
        <fields>
            <field name="vaAppId" type="text" length="100" title="Va App Id" primaryKey="true">
                <validators>
                    <Validator>
                        <type>isString</type>
                        <stopIfFalse>true</stopIfFalse>
                        <typeCastValidator>true</typeCastValidator>
                    </Validator>
                </validators>
            </field>
            <field name="dsFieldName" type="text" length="255" title="Ds Field Name" primaryKey="true">
                <validators>
                    <Validator>
                        <type>isString</type>
                        <stopIfFalse>true</stopIfFalse>
                        <typeCastValidator>true</typeCastValidator>
                    </Validator>
                </validators>
            </field>
            <field name="dataTypeCode" type="text" length="20" title="Data Type Code">
                <validators>
                    <Validator>
                        <type>isString</type>
                        <stopIfFalse>true</stopIfFalse>
                        <typeCastValidator>true</typeCastValidator>
                    </Validator>
                </validators>
            </field>
    	<operationBindings>
            <binding operationType="fetch" serverMethod="fetch">
            <serverObject  lookupStyle="spring" bean="vaDataSourceFieldsDao"/>
            </binding>
        </operationBindings>
            
        </fields>
        
    </DataSource>
    DAO
    Code:
    public DSResponse fetch(DSRequest dsRequest)
            throws Exception
        {
            log.info(" VaDataSourceFields procesing VoiceApplicationsDMI fetch operation");
            DSResponse dsResponse = new DSResponse();
    
            Session hibernateSession = sessionFactory.getCurrentSession();
    
            // DataSource protocol: get filter criteria
            String vaAppId = (String)dsRequest.getFieldValue("vaAppId");
            log.info(" VaDataSourceFields "+vaAppId);
            // DataSource protocol: get requested row range
            long startRow = (int)dsRequest.getStartRow();
            long endRow = (int)dsRequest.getEndRow();
    
            Criteria criteria = hibernateSession.createCriteria(VaDataSourceFields.class);
            Criterion vaAppIdRestriction = null;
            if (vaAppId != null) {
                vaAppIdRestriction = Restrictions.like("vaAppId", vaAppId, MatchMode.ANYWHERE);
                criteria.add(vaAppIdRestriction);
            }
    
            // determine total available rows
            // this is used by e.g. the ListGrid to auto-size its scrollbar
            criteria.setProjection(Projections.rowCount());
            Integer rowCount = (Integer)criteria.uniqueResult();
            log.info(" VaDataSourceFields rowcount "+ rowCount);
            long totalRows = rowCount == null ? 0 : rowCount.intValue();
    
            // clamp endRow to available rows and slice out requested range
            endRow = Math.min(endRow, totalRows);
    
            // rebuilt the criteria minus the rowCount projection
            criteria = hibernateSession.createCriteria(VaDataSourceFields.class);
            if (vaAppId != null) criteria.add(vaAppIdRestriction);
    
            // limit number of rows returned to just what the ListGrid asked for
            criteria.setFirstResult((int)startRow);
            criteria.setMaxResults((int)(endRow - startRow));
            List matchingItems = criteria.list();
            log.info(" VaDataSourceFields matching Items "+matchingItems+""+totalRows);
            // DataSource protocol: return matching item beans
            dsResponse.setData(matchingItems);
            // tell client what rows are being returned, and what's available
            dsResponse.setStartRow(startRow);
            dsResponse.setEndRow(endRow);
            dsResponse.setTotalRows(totalRows);
    
            return dsResponse;
        }
    .hbm file
    Code:
    <hibernate-mapping>
      <class name="com.myapp.server.VaDataSourceFields" table="va_data_source_fields">
      	<composite-id name="vaDataSourceFieldsPk" class="com.myapp.server.VaDataSourceFieldsPk">
          <key-property name="vaAppId" column="VA_APP_ID" />
          <key-property name="dsFieldName" column="DS_FIELD_NAME" />
        </composite-id>
        <property generated="never" lazy="false"  name="dataTypeCode" column="DATA_TYPE_CODE" />
       
        <!--
       <many-to-one name="DataTypes" cascade="all" lazy="true">
          <column name="DATA_TYPE_CODE" />
        </many-to-one>
        <many-to-one name="VoiceApplications" cascade="all" lazy="true">
          <column name="VA_APP_ID" />
        </many-to-one>
        <set name="VaFieldOptions" lazy="true" cascade="all" inverse="true">
          <key>
            <column name="VA_APP_ID" />
            <column name="DS_FIELD_NAME" />
          </key>
          <one-to-many class="com.myapp.server.VaFieldOptions" />
        </set>
      -->
    </class>
    </hibernate-mapping>
    Whts wrong in my code ? Pls Suggest

    #2
    Post the *entire* server-side log for the request.

    Comment


      #3
      Code:
      === 2010-10-04 13:17:01,346 [l0-3] INFO  IDACall - Performing 1 operation(s)
      === 2010-10-04 13:17:01,346 [l0-6] INFO  IDACall - Performing 1 operation(s)
      === 2010-10-04 13:17:01,362 [l0-3] WARN  RequestContext - dsRequest.execute() failed: 
      java.lang.Exception: Operation type 'fetch' not supported by this DataSource (vaDataSourceFields)
      	at com.isomorphic.datasource.DataSource.notSupported(DataSource.java:1534)
      	at com.isomorphic.datasource.DataSource.executeFetch(DataSource.java:1474)
      	at com.isomorphic.datasource.DataSource.execute(DataSource.java:782)
      	at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:721)
      	at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
      	at com.isomorphic.application.AppBase.execute(AppBase.java:491)
      	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1382)
      	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:155)
      	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:106)
      	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
      	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
      	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
      	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
      	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      	at org.mortbay.jetty.Server.handle(Server.java:324)
      	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
      	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
      	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
      	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
      === 2010-10-04 13:17:01,362 [l0-6] INFO  ServerObject - DMI on Spring bean: voiceApplicationDao
      This is all what I have in the server request log

      Comment


        #4
        Looks like you may have turned off default logging settings, which are contained in log4j.isc.config.xml. See the installation instructions.

        Comment

        Working...
        X