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
	vaDataSourceDS.ds.xml
	DAO
	.hbm file
	Whts wrong in my code ? Pls Suggest
							
						
					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)
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>
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;
    }
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>

Comment