Announcement

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

    Problem during evaluation re: updating joined data

    1. the SmartGWT or SmartClient version and browser version(s) involved;
    Power 2.3 and Firefox 3.6.


    I'm trying to join table data in a form using the database tables ACCOUNT, CONTACT_INFORMATION and ADDRESS.

    Fetching data works okay. But trying to add new data fails and updating existing data is only updating the primary table which is ACCOUNT. The Address data is not being updated.

    When I try and create a new entry using the DynamicForm, I get the error message "mysql can't handle more than one auto_increment primary_key".

    When I try and update an existing entry using the DynamicForm, the ACCOUNT data updates correctly in the database, but the ADDRESS data doesn't update at all.

    ACCOUNT, CONTACT, ADDRESS are the primary keys of the tables as well as being auto_increment columns (mysql).

    Any help is greatly appreciated.



    Here is my code for the datasource and the dynamicform -
    Code:
    isc.DataSource.create({
        ID:"account",
        dataFormat:"iscServer",
        dbName:"RIVERS",
        serverType:"sql",
        tableName:"account",
        fields:{
            ACCOUNT:{
                name:"ACCOUNT",
                primaryKey:true,
                type:"sequence"
            },
            FULLNAME2:{
                length:"125",
                name:"FULLNAME2",
                required:true,
                type:"text"
            },
            CURRENT_BALANCE:{
                length:"125",
                name:"CURRENT_BALANCE",
                type:"float"
            },
            NOW_DUE:{
                length:"125",
                name:"NOW_DUE",
                type:"float"
            },
            OVERDUE1:{
                length:"125",
                name:"OVERDUE1",
                type:"float"
            },
            SPENTRECENT:{
                length:"125",
                name:"SPENTRECENT",
                type:"float"
            },
            SPENTTOTAL:{
                length:"125",
                name:"SPENTTOTAL",
                type:"float"
            },
            DATE_ACCOUNT_OPENED:{
                length:"125",
                name:"DATE_ACCOUNT_OPENED",
                type:"date",
                displayFormat:"toEuropeanShortDate"
            },
            DATE_ACCOUNT_CLOSED:{
                length:"125",
                name:"DATE_ACCOUNT_CLOSED",
                type:"date",
                displayFormat:"toEuropeanShortDate"
            },
            ADDRESS1:{
                length:"50",
                name:"ADDRESS1",
                type:"text",
                customSQL:"true",
                tableName:"address"
            },
            ADDRESS2:{
                length:"50",
                name:"ADDRESS2",
                type:"text",
                customSQL:"true",
                tableName:"address"
            },
            PHONE_NO:{
                length:"10",
                name:"PHONE_NO",
                type:"text",
                customSQL:"true",
                tableName:"address"
            },
            FAX_NO:{
                length:"10",
                name:"FAX_NO",
                type:"text",
                customSQL:"true",
                tableName:"address"
            },
            SALES_CONTACT:{
                hidden:true,
                name:"SALES_CONTACT",
                customSQL:"true",
                tableName:"account"
            },
            CONTACT:{
                hidden:true,
                primaryKey:true,
                type:"sequence",
                name:"CONTACT",
                customSQL:"true",
                tableName:"contact_information"
            },
            ADDRESS:{
                name:"ADDRESS",
                type:"hidden",
                customSQL:"true",
                tableName:"contact_information"
            },
            ADDRESS:{
                name:"ADDRESS",
                primaryKey:true,
                type:"sequence",
                customSQL:"true",
                tableName:"address"
            }
        },
        operationBindings:[
            {
                operationType:"fetch",
                customCriteriaFields:"SALES_CONTACT,CONTACT,ADDRESS",
                customValueFields:"ADDRESS,CONTACT,SALES_CONTACT,ADDRESS1,ADDRESS2,PHONE_NO,FAX_NO",
                tableClause:"account,contact_information,address",
                whereClause:"account.SALES_CONTACT = contact_information.CONTACT AND contact_information.ADDRESS = address.ADDRESS AND ($defaultWhereClause)"
            },
            {
                operationType:"update",
                customCriteriaFields:"ACCOUNT,SALES_CONTACT,CONTACT,ADDRESS",
                customValueFields:"ADDRESS,CONTACT,SALES_CONTACT,ADDRESS1,ADDRESS2,PHONE_NO,FAX_NO",
                tableClause:"account,contact_information,address",
                whereClause:"account.SALES_CONTACT = contact_information.CONTACT AND contact_information.ADDRESS = address.ADDRESS AND ($defaultWhereClause)"
            },
            {
                operationType:"add",
                customCriteriaFields:"ACCOUNT,SALES_CONTACT,CONTACT,ADDRESS",
                customValueFields:"ADDRESS,CONTACT,SALES_CONTACT,ADDRESS1,ADDRESS2,PHONE_NO,FAX_NO",
                tableClause:"account,contact_information,address",
                whereClause:"account.SALES_CONTACT = contact_information.CONTACT AND contact_information.ADDRESS = address.ADDRESS AND ($defaultWhereClause)"
            }
        ],
        dataSourceVersion:"1",
        generatedBy:"SC_SNAPSHOT-2010-12-15/EVAL Deployment 2010-12-15"
    })
    Code:
    isc.DynamicForm.create({
        ID:"EditAccountForm",
        autoDraw:false,
        dataSource:"account",
        disabled:true,
        fields:[
            {
                name:"ACCOUNT",
                title:"Account",
                align:"left",
                disabled:true,
                _constructor:"TextItem"
            },
            {
                name:"FULLNAME2",
                title:"Name",
                _constructor:"TextItem"
            },
            {
                name:"CURRENT_BALANCE",
                title:"Current Balance",
                textAlign:"right",
                align:"left",
                prompt:"Enter the balance without dollar sign or commas.",
                hint:"1234.56",
                mapValueToDisplay:function(form,item,value) {
                	if (this.getValue() == undefined) return "";
                	return formatCurrency(this.getValue()); },
                _constructor:"TextItem"
            },
            {
                name:"NOW_DUE",
                title:"Now Due",
                textAlign:"right",
                align:"left",
                prompt:"Enter the balance without dollar sign or commas.",
                hint:"1234.56",
                mapValueToDisplay:function(form,item,value) {
                	if (this.getValue() == undefined) return "";
                	return formatCurrency(this.getValue()); },
                _constructor:"TextItem"
            },
            {
                name:"OVERDUE1",
                title:"Overdue",
                textAlign:"right",
                align:"left",
                prompt:"Enter the balance without dollar sign or commas.",
                hint:"1234.56",
                mapValueToDisplay:function(form,item,value) {
                	if (this.getValue() == undefined) return "";
                	return formatCurrency(this.getValue()); },
                _constructor:"TextItem"
            },
            {
                name:"SPENTRECENT",
                title:"Spent Recent",
                textAlign:"right",
                align:"left",
                prompt:"Enter the balance without dollar sign or commas.",
                hint:"1234.56",
                mapValueToDisplay:function(form,item,value) {
                	if (this.getValue() == undefined) return "";
                	return formatCurrency(this.getValue()); },
                _constructor:"TextItem"
            },
            {
                name:"SPENTTOTAL",
                title:"Spent Total",
                textAlign:"right",
                align:"left",
                prompt:"Enter the balance without dollar sign or commas.",
                hint:"1234.56",
                mapValueToDisplay:function(form,item,value) {
                	if (this.getValue() == undefined) return "";
                	return formatCurrency(this.getValue()); },
                _constructor:"TextItem"
            },
            {
                name:"DATE_ACCOUNT_OPENED",
                title:"Date Account Opened",
                align:"left",
                prompt:"Enter the date on which the account was opened",
                hint:"31/12/2010",
                useTextField:true,
                _constructor:"DateItem"
            },
            {
                name:"DATE_ACCOUNT_CLOSED",
                title:"Date Account Closed",
                align:"left",
                validateOnChange:true,
                prompt:"Enter the date on which the account was closed",
                hint:"31/12/2010",
                showErrorStyle:true,
                useTextField:true,
                invalidDateStringMessage:"Invalid date format",
                _constructor:"DateItem"
            },
            {
                name:"ADDRESS1",
                title:"Address Line 1",
                _constructor:"TextItem"
            },
            {
                name:"ADDRESS2",
                title:"Address Line 2",
                _constructor:"TextItem"
            },
            {
                name:"PHONE_NO",
                title:"Phone No",
                mask: "(##)####-####",
                _constructor:"TextItem"
            },
            {
                name:"FAX_NO",
                title:"Fax No",
                mask: "(##)####-####",
                _constructor:"TextItem"
            }
        ],
        height:500
    })

    #2
    I should add that in the console logs I can see it recognising the data needed to perform the update, but that data isn't being passed to the ultimate SQL statement:

    (ADDRESS1:"asdf" is the only updated data in the form)

    Code:
    Performing update operation with criteria: {ADDRESS:22371,ACCOUNT:14924,CONTACT:22371}	values: {SALES_CONTACT:"22371",SPENTTOTAL:0.0,SPENTRECENT:0.0,OVERDUE1:0.0,ADDRESS:"22371",DATE_ACCOUNT_OPENED:new Date(1105880400000),FULLNAME2:"My Company Account",DATE_ACCOUNT_CLOSED:new Date(1293022800000),CURRENT_BALANCE:0.0,NOW_DUE:0.0,ACCOUNT:14924,CONTACT:"22371",_selection_4:true,ADDRESS1:"asdf"}
    Code:
    UPDATE account,contact_information,address SET SPENTTOTAL=0.0, SPENTRECENT=0.0, OVERDUE1=0.0, DATE_ACCOUNT_OPENED='2005-01-17 00:00:00.0', FULLNAME2='My Company Account', DATE_ACCOUNT_CLOSED='2010-12-23 00:00:00.0', NOW_DUE=0.0, CURRENT_BALANCE=0.0 WHERE account.SALES_CONTACT = contact_information.CONTACT AND contact_information.ADDRESS = address.ADDRESS AND ((address.ADDRESS='22371' AND account.ACCOUNT='14924' AND contact_information.CONTACT='22371'))

    Comment


      #3
      Joins and/or fields included via tableName do not imply automatic persistence to the related table. If you want to persist changes to the related table, you should make a DataSource for the other table (useful anyway) and add DMI logic to create a second DSRequest on this related DataSource to do the save.

      Comment


        #4
        Thankyou for the speedy response, isomorphic.

        I've spent all day trying to get DMI working in the method you suggest, and I'm not having much success.

        I'm getting "java.lang.NoClassDefFoundError: com/isomorphic/datasource/DSRequest" for which the only reference I can find is http://forums.smartclient.com/showthread.php?t=3788.

        So I have ensured that my DMI has a zero argument constructor, I have placed the compiled class into \smartclientSDK\WEB-INF\classes, and placed address.ds.xml in \smartclientSDK\shared\ds.

        I am running start_embedded_server.bat in the smartclientSDK folder.

        Here is my page -
        Code:
        isc.DataSource.create({
            ID:"address",
            generatedBy:"SC_SNAPSHOT-2010-12-22/EVAL Deployment 2010-12-22",
            serverType:"generic",
            fields:{
                id:{
                    name:"id",
                    primaryKey:true,
                    type:"sequence"
                },
                sub:{
                    name:"sub",
                    type:"integer"
                },
                mapReference:{
                    name:"mapReference",
                    type:"text"
                },
                postCode:{
                    name:"postCode",
                    type:"integer"
                },
                address1:{
                    name:"address1",
                    type:"text"
                },
                barcode:{
                    name:"barcode",
                    type:"text"
                },
                freecallNo:{
                    name:"freecallNo",
                    type:"text"
                },
                lastupdated:{
                    name:"lastupdated",
                    type:"date"
                },
                address2:{
                    name:"address2",
                    type:"text"
                },
                access:{
                    name:"access",
                    type:"integer"
                },
                deleted:{
                    name:"deleted",
                    type:"text"
                },
                phoneNoSearch:{
                    name:"phoneNoSearch",
                    type:"text"
                },
                phoneNo:{
                    name:"phoneNo",
                    type:"text"
                },
                accountPtrType:{
                    name:"accountPtrType",
                    type:"integer"
                },
                company:{
                    name:"company",
                    type:"integer"
                },
                lastinserted:{
                    name:"lastinserted",
                    type:"date"
                },
                account:{
                    name:"account",
                    type:"integer"
                },
                branch:{
                    name:"branch",
                    type:"integer"
                },
                faxNo:{
                    name:"faxNo",
                    type:"text"
                }
            },
            operationBindings:[
                {
                    operationType:"add",
                    serverMethod:"add",
                    serverObject:{
                        className:"AddressPersistenceDMI",
                        lookupStyle:"new"
                    }
                }
            ]
        })
        
        
        
        isc.DynamicForm.create({
            ID:"DynamicForm0",
            autoDraw:false,
            dataSource:"address",
            fields:[
                {
                    name:"id",
                    title:"Id",
                    _constructor:"TextItem"
                },
                {
                    name:"postCode",
                    title:"Post Code",
                    _constructor:"TextItem"
                },
                {
                    name:"address1",
                    title:"Address1",
                    _constructor:"TextItem"
                },
                {
                    name:"address2",
                    title:"Address2",
                    _constructor:"TextItem"
                },
                {
                    name:"company",
                    title:"Company",
                    _constructor:"TextItem"
                },
                {
                    name:"account",
                    title:"Account",
                    _constructor:"TextItem"
                },
                {
                    name:"SubmitItem0",
                    title:"Submit",
                    click:{
                        target:"DynamicForm0",
                        name:"saveData",
                        title:"Save Data"
                    },
                    _constructor:"SubmitItem"
                }
            ],
            width:250
        })
        Here is my data source -
        Code:
        <DataSource ID="address" serverType="generic"  generatedBy="SC_SNAPSHOT-2010-12-22/EVAL Deployment 2010-12-22">
        	<fields>
        		<field name="id" type="sequence" primaryKey="true"></field>
        		<field name="sub" type="integer"></field>
        		<field name="mapReference" type="text"></field>
        		<field name="postCode" type="integer"></field>
        		<field name="address1" type="text"></field>
        		<field name="barcode" type="text"></field>
        		<field name="freecallNo" type="text"></field>
        		<field name="lastupdated" type="date"></field>
        		<field name="address2" type="text"></field>
        		<field name="access" type="integer"></field>
        		<field name="deleted" type="text"></field>
        		<field name="phoneNoSearch" type="text"></field>
        		<field name="phoneNo" type="text"></field>
        		<field name="accountPtrType" type="integer"></field>
        		<field name="company" type="integer"></field>
        		<field name="lastinserted" type="date"></field>
        		<field name="account" type="integer"></field>
        		<field name="branch" type="integer"></field>
        		<field name="faxNo" type="text"></field>
        	</fields>
        
        	<operationBindings>
        		<binding operationType="add" serverMethod="add">
        			<serverObject  lookupStyle="new" className="AddressPersistenceDMI"/>
        		</binding>
        	</operationBindings>
        	
        </DataSource>
        Here is my DMI class -
        Code:
        import java.util.*;
        import javax.servlet.*;
        import javax.servlet.http.*;
        
        import com.isomorphic.log.*;
        import com.isomorphic.util.*;
        import com.isomorphic.datasource.*;
        
        public class AddressPersistenceDMI {
        
        	public AddressPersistenceDMI () {}
        
        	public void add(DSRequest dsRequest)  throws Exception  {
        System.out.println("I am in add");
        	}
        }
        Thanks in advance.

        Comment


          #5
          Always post the complete server-side log for the request.

          Comment


            #6
            Can do. The logs aren't telling me anything though.

            All I can see is
            Code:
            === 2011-01-06 19:42:48,125 [sor8] ERROR IDACall - Top-level servlet error: 
            === 2011-01-06 19:42:48,186 [sor8] INFO  Compression - /isomorphic/IDACall: 3546 -> 947 bytes
            Code:
            === 2011-01-06 19:42:28,618 [sor1] DEBUG RPCDMI - rpc returned data
            === 2011-01-06 19:42:28,618 [sor1] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2011-01-06 19:42:28,619 [sor1] INFO  Compression - /isomorphic/IDACall: 67 -> 73 bytes
            === 2011-01-06 19:42:40,705 [sor8] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/DynamicForm/validation_error_icon.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:40,728 [sor8] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/images/DynamicForm/validation_error_icon.png
            === 2011-01-06 19:42:44,036 [sor2] INFO  RequestContext - URL: '/tools/visualBuilder/workspace/deleteme.html', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:44,038 [sor2] INFO  JSSyntaxScannerFilter - /tools/visualBuilder/workspace/deleteme.html: scanning <script> tags in html output
            === 2011-01-06 19:42:44,040 [sor2] INFO  Compression - /tools/visualBuilder/workspace/deleteme.html: 4501 -> 985 bytes
            === 2011-01-06 19:42:44,300 [sor4] INFO  RequestContext - URL: '/isomorphic/system/modules/ISC_Core.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:44,302 [sor4] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Core.js
            === 2011-01-06 19:42:44,304 [sor4] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Core.js
            === 2011-01-06 19:42:44,852 [sor7] INFO  RequestContext - URL: '/isomorphic/system/modules/ISC_Foundation.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:44,854 [sor7] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Foundation.js
            === 2011-01-06 19:42:44,854 [sor7] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Foundation.js
            === 2011-01-06 19:42:45,034 [sor3] INFO  RequestContext - URL: '/isomorphic/system/modules/ISC_Containers.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:45,036 [sor3] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Containers.js
            === 2011-01-06 19:42:45,037 [sor3] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Containers.js
            === 2011-01-06 19:42:45,134 [sor1] INFO  RequestContext - URL: '/isomorphic/system/modules/ISC_Grids.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:45,137 [sor1] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Grids.js
            === 2011-01-06 19:42:45,139 [sor1] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Grids.js
            === 2011-01-06 19:42:45,641 [sor8] INFO  RequestContext - URL: '/isomorphic/system/modules/ISC_Forms.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:45,642 [sor8] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Forms.js
            === 2011-01-06 19:42:45,644 [sor8] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_Forms.js
            === 2011-01-06 19:42:46,053 [sor2] INFO  RequestContext - URL: '/isomorphic/system/modules/ISC_DataBinding.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,055 [sor2] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_DataBinding.js
            === 2011-01-06 19:42:46,057 [sor2] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/system/modules/ISC_DataBinding.js
            === 2011-01-06 19:42:46,421 [sor4] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/load_skin.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,423 [sor4] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/load_skin.js
            === 2011-01-06 19:42:46,424 [sor4] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/load_skin.js
            === 2011-01-06 19:42:46,444 [sor7] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/skin_styles.css', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,445 [sor7] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/skin_styles.css
            === 2011-01-06 19:42:46,446 [sor7] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/skin_styles.css
            === 2011-01-06 19:42:46,496 [sor3] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/button/button_start.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,498 [sor1] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/button/button_stretch.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,500 [sor8] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/button/button_end.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,501 [sor1] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/images/button/button_stretch.png
            === 2011-01-06 19:42:46,500 [sor3] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/images/button/button_start.png
            === 2011-01-06 19:42:46,502 [sor8] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/images/button/button_end.png
            === 2011-01-06 19:42:46,507 [sor2] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/controls/text_input.gif', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,510 [sor2] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/images/controls/text_input.gif
            === 2011-01-06 19:42:46,519 [sor4] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/blank.gif', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:46,522 [sor4] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2010-12-22/smartclientSDK/isomorphic/skins/SilverWave/images/blank.gif
            === 2011-01-06 19:42:47,864 [sor7] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_start.png
            === 2011-01-06 19:42:47,867 [sor3] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_stretch.png
            === 2011-01-06 19:42:47,873 [sor1] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_end.png
            === 2011-01-06 19:42:47,881 [sor8] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_Down_start.png
            === 2011-01-06 19:42:47,883 [sor2] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_Down_stretch.png
            === 2011-01-06 19:42:47,886 [sor4] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_Down_end.png
            === 2011-01-06 19:42:47,961 [sor7] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_Over_start.png
            === 2011-01-06 19:42:47,963 [sor3] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_Over_stretch.png
            === 2011-01-06 19:42:47,966 [sor1] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Focused_Over_end.png
            === 2011-01-06 19:42:47,988 [sor8] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Over_start.png
            === 2011-01-06 19:42:47,989 [sor2] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Over_stretch.png
            === 2011-01-06 19:42:47,992 [sor4] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\button\button_Over_end.png
            === 2011-01-06 19:42:48,020 [sor7] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_TL.png
            === 2011-01-06 19:42:48,021 [sor3] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_T.png
            === 2011-01-06 19:42:48,024 [sor1] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_TR.png
            === 2011-01-06 19:42:48,026 [sor8] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_L.png
            === 2011-01-06 19:42:48,029 [sor2] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_R.png
            === 2011-01-06 19:42:48,031 [sor4] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_BL.png
            === 2011-01-06 19:42:48,033 [sor7] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_B.png
            === 2011-01-06 19:42:48,037 [sor3] INFO  Download - Returning 304: Not modified on conditional get of: C:\SmartClient_SC_SNAPSHOT-2010-12-22\smartclientSDK\isomorphic\skins\SilverWave\images\Window\window_BR.png
            === 2011-01-06 19:42:48,047 [sor1] INFO  RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:48,049 [sor1] DEBUG XML - Parsed XML from (in memory stream): 1ms
            === 2011-01-06 19:42:48,051 [sor1] WARN  Validation - Element is an instance of type Object, which does not inherit from declared field type transaction at 
            === 2011-01-06 19:42:48,053 [sor1] DEBUG RPCManager - Processing 1 requests.
            === 2011-01-06 19:42:48,054 [sor1] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                values:{
                },
                operationConfig:{
                    dataSource:"address",
                    operationType:"add"
                },
                componentId:"DynamicForm0",
                appID:"builtinApplication",
                operation:"address_add",
                oldValues:{
                },
                criteria:{
                }
            }
            === 2011-01-06 19:42:48,055 [sor1] INFO  IDACall - Performing 1 operation(s)
            === 2011-01-06 19:42:48,055 [sor8] INFO  RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            === 2011-01-06 19:42:48,059 [sor1] ERROR IDACall - Top-level servlet error: 
            === 2011-01-06 19:42:48,061 [sor8] DEBUG XML - Parsed XML from (in memory stream): 1ms
            === 2011-01-06 19:42:48,107 [sor8] WARN  Validation - Element is an instance of type Object, which does not inherit from declared field type transaction at 
            === 2011-01-06 19:42:48,107 [sor1] INFO  Compression - /isomorphic/IDACall: 3546 -> 947 bytes
            === 2011-01-06 19:42:48,109 [sor8] DEBUG RPCManager - Processing 1 requests.
            === 2011-01-06 19:42:48,110 [sor8] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                values:{
                },
                operationConfig:{
                    dataSource:"address",
                    operationType:"add"
                },
                componentId:"DynamicForm0",
                appID:"builtinApplication",
                operation:"address_add",
                oldValues:{
                },
                criteria:{
                }
            }
            === 2011-01-06 19:42:48,124 [sor8] INFO  IDACall - Performing 1 operation(s)
            === 2011-01-06 19:42:48,125 [sor8] ERROR IDACall - Top-level servlet error: 
            === 2011-01-06 19:42:48,186 [sor8] INFO  Compression - /isomorphic/IDACall: 3546 -> 947 bytes
            === 2011-01-06 19:42:51,727 [sor2] INFO  RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
            Instead, I got a detailed message using Firebug:
            Code:
            <BR>com.isomorphic.servlet.IDACall top-level exception<BR>
            <PRE>
            java.lang.NoClassDefFoundError: com/isomorphic/datasource/DSRequest
            	at java.lang.Class.getDeclaredMethods0(Native Method)
            	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
            	at java.lang.Class.privateGetPublicMethods(Class.java:2547)
            	at java.lang.Class.getMethods(Class.java:1410)
            	at com.isomorphic.rpc.ServerObject.findMethod(ServerObject.java:281)
            	at com.isomorphic.rpc.ServerObject.getMethod(ServerObject.java:273)
            	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:459)
            	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
            	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1442)
            	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
            	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:130)
            	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:95)
            	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
            	at com.isomorphic.js.JSSyntaxScannerFilter.doFilter(JSSyntaxScannerFilter.java:241)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
            	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
            	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
            	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
            	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
            	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
            	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
            	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
            	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
            	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
            	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
            	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
            	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
            	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
            
            	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
            	at java.lang.Thread.run(Thread.java:619)
            Caused by: java.lang.ClassNotFoundException: com.isomorphic.datasource.DSRequest
            	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
            	at java.security.AccessController.doPrivileged(Native Method)
            	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
            	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
            	... 36 more
            </PRE>
            [CODE]

            Comment


              #7
              These logs don't make any sense - you're getting an error that a class is not found, when that class is in the same .jar file as other classes in the stack trace.

              Either your project became corrupted, or it was installed incorrectly - rebuild it with the full installation procedure and be sure not to skip any steps.

              Comment


                #8
                I made a minor mistake - I have "SmartClient 8.0 Evaluation" instead of Power 2.3. I tried downloading one and found myself on another page downloading the other.

                So rather than trying to go through the full installation procedure (time is a major restriction on evaluating this product) I just downloaded and re-installed "SmartClient 8.0 Evaluation". I then copied across all of my files to the new installation and still get the same error message - "java.lang.NoClassDefFoundError: com/isomorphic/datasource/DSRequest"

                All I'm really trying to do (and I thought this would be a relatively common need) is create a persistence mechanism that allows me to select/add/update across multiple database tables. Ideally I want to avoid the trouble of setting up Spring and Hibernate - I'm looking for this tool to do all the heavy lifting for me.

                So I have 2 questions -

                1. What is the simplest/definite/most-proven method to achieve this?
                2. Is there some REALLY good, detailed instructions on how to achieve this?

                I've gone through chapters 8 and 9 of the Quick Start Guide and I've trawled through most of the forum and not found the answers I'm looking for.

                Unfortunately training is not an option at this stage, since convincing my boss to pay for this tool is challenging enough.

                Comment


                  #9
                  Sounds like you've spliced together SmartClient and SmartGWT resources - never do this. You need to start over, but this is very simple - the SmartGWT Evaluation SDK includes samples projects that can be imported into Eclipse and provide immediate connectivity to a sample SQL database.

                  You can just copy in the database settings (server.properties), DataSource files (.ds.xml) and your UI code to be running again.

                  Then you just write a DMI, as previously recommend and as explained in depth in the QuickStart Guide. This instructions are already correct and simple to follow, but they won't work in a wedged installation, obviously.

                  Comment


                    #10
                    Okay, I've started from scratch and looking to follow a different approach. I will try to use the Hibernate Connector. I have generated a Hibernate Entity for Address and filled in all of the blanks.

                    It's inserting null values like the mapping from the form to the datasource is not working.

                    The error message in the DOS console is -
                    Code:
                    === 2011-01-07 13:20:15,389 [sor2] DEBUG SQL -
                        insert
                        into
                            address
                            (address, sub, mapReference, postCode, address1, barcode, freecallNo, lastupdated, address2, access, deleted, phoneNoSearch, phoneNo, accountPtrType, company, lastinserted, account, branch, faxNo)
                        values
                            (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
                    === 2011-01-07 13:20:15,414 [sor2] ERROR HibernateDataSource - [builtinApplication.address_add] Failed to saveOrUpdate record: {
                        postCode:1234
                    }
                    === 2011-01-07 13:20:15,414 [sor2] WARN  RequestContext - dsRequest.execute() failed:
                    org.hibernate.exception.SQLGrammarException: could not insert: [address]
                    The SmartClient console says -

                    Code:
                    === 2011-01-07 13:01:20,383 [sor7] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                        values:{
                            postCode:1234
                        },
                        operationConfig:{
                            dataSource:"address",
                            operationType:"add"
                        },
                        componentId:"DynamicForm0",
                        appID:"builtinApplication",
                        operation:"address_add",
                        oldValues:{
                        },
                        criteria:{
                        }
                    }
                    === 2011-01-07 13:01:20,383 [sor2] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                        values:{
                            postCode:1234
                        },
                        operationConfig:{
                            dataSource:"address",
                            operationType:"add"
                        },
                        componentId:"DynamicForm0",
                        appID:"builtinApplication",
                        operation:"address_add",
                        oldValues:{
                        },
                        criteria:{
                        }
                    }
                    === 2011-01-07 13:01:20,385 [sor7] INFO  IDACall - Performing 1 operation(s)
                    === 2011-01-07 13:01:20,387 [sor2] INFO  IDACall - Performing 1 operation(s)
                    === 2011-01-07 13:01:20,395 [sor2] DEBUG AppBase - [builtinApplication.address_add] No userTypes defined, allowing anyone access to all operations for this application
                    === 2011-01-07 13:01:20,395 [sor7] DEBUG AppBase - [builtinApplication.address_add] No userTypes defined, allowing anyone access to all operations for this application
                    === 2011-01-07 13:01:20,396 [sor2] DEBUG AppBase - [builtinApplication.address_add] No public zero-argument method named '_address_add' found, performing generic datasource operation
                    === 2011-01-07 13:01:20,396 [sor7] DEBUG AppBase - [builtinApplication.address_add] No public zero-argument method named '_address_add' found, performing generic datasource operation
                    === 2011-01-07 13:01:20,397 [sor2] INFO  HibernateDataSource - [builtinApplication.address_add] Performing add operation with
                    	criteria: {}	values: {postCode:1234}
                    === 2011-01-07 13:01:20,397 [sor7] INFO  HibernateDataSource - [builtinApplication.address_add] Performing add operation with
                    	criteria: {}	values: {postCode:1234}
                    === 2011-01-07 13:01:20,445 [sor2] DEBUG HibernateTransaction - [builtinApplication.address_add] Started new transaction "17935876"
                    === 2011-01-07 13:01:20,461 [sor7] DEBUG HibernateTransaction - [builtinApplication.address_add] Started new transaction "26178204"
                    === 2011-01-07 13:01:20,500 [sor7] ERROR HibernateDataSource - [builtinApplication.address_add] Failed to saveOrUpdate record: {
                        postCode:1234
                    }
                    === 2011-01-07 13:01:20,500 [sor2] ERROR HibernateDataSource - [builtinApplication.address_add] Failed to saveOrUpdate record: {
                        postCode:1234
                    }
                    === 2011-01-07 13:01:20,501 [sor2] WARN  RequestContext - dsRequest.execute() failed: 
                    === 2011-01-07 13:01:20,501 [sor7] WARN  RequestContext - dsRequest.execute() failed: 
                    === 2011-01-07 13:01:20,551 [sor2] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
                    === 2011-01-07 13:01:20,613 [sor7] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
                    === 2011-01-07 13:01:20,614 [sor2] WARN  HibernateTransaction - Rolling back 0 database update(s)
                    === 2011-01-07 13:01:20,615 [sor2] DEBUG HibernateTransaction - Rolling back transaction "17935876"
                    === 2011-01-07 13:01:20,621 [sor2] DEBUG HibernateTransaction - Removed transaction "17935876"
                    === 2011-01-07 13:01:20,622 [sor7] WARN  HibernateTransaction - Rolling back 0 database update(s)
                    === 2011-01-07 13:01:20,623 [sor7] DEBUG HibernateTransaction - Rolling back transaction "26178204"
                    === 2011-01-07 13:01:20,624 [sor2] DEBUG RPCManager - non-DMI response, dropExtraFields: false
                    === 2011-01-07 13:01:20,625 [sor7] DEBUG HibernateTransaction - Removed transaction "26178204"
                    === 2011-01-07 13:01:20,627 [sor7] DEBUG RPCManager - non-DMI response, dropExtraFields: false
                    === 2011-01-07 13:01:20,642 [sor2] INFO  Compression - /isomorphic/IDACall: 148 -> 134 bytes
                    === 2011-01-07 13:01:20,642 [sor7] INFO  Compression - /isomorphic/IDACall: 148 -> 134 bytes
                    === 2011-01-07 13:01:20,677 [sor8] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/shared/background.gif', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:01:20,680 [sor8] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/SilverWave/images/shared/background.gif
                    === 2011-01-07 13:01:20,695 [sor4] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/Dialog/warn.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:01:20,697 [sor4] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/SilverWave/images/Dialog/warn.png
                    === 2011-01-07 13:01:20,740 [sor3] INFO  RequestContext - URL: '/isomorphic/skins/SilverWave/images/Window/close.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:01:20,742 [sor3] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/SilverWave/images/Window/close.png
                    === 2011-01-07 13:02:19,768 [sor1] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_start.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:19,770 [sor2] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_stretch.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:19,775 [sor7] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_end.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:19,775 [sor1] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_start.png
                    === 2011-01-07 13:02:19,776 [sor2] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_stretch.png
                    === 2011-01-07 13:02:19,779 [sor7] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_end.png
                    === 2011-01-07 13:02:19,969 [sor8] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_end.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:19,973 [sor8] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Tab/top/tab_Over_end.png
                    === 2011-01-07 13:02:20,132 [sor4] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Tab/top/tab_Selected_Over_start.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,134 [sor3] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Tab/top/tab_Selected_Over_stretch.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,138 [sor1] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Tab/top/tab_Selected_Over_end.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,138 [sor4] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Tab/top/tab_Selected_Over_start.png
                    === 2011-01-07 13:02:20,140 [sor3] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Tab/top/tab_Selected_Over_stretch.png
                    === 2011-01-07 13:02:20,141 [sor1] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Tab/top/tab_Selected_Over_end.png
                    === 2011-01-07 13:02:20,167 [sor2] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_TL.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,169 [sor7] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_T.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,169 [sor2] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_TL.png
                    === 2011-01-07 13:02:20,175 [sor7] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_T.png
                    === 2011-01-07 13:02:20,176 [sor3] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_R.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,176 [sor4] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_L.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,175 [sor8] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_TR.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,179 [sor3] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_R.png
                    === 2011-01-07 13:02:20,177 [sor1] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_BL.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,181 [sor2] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_B.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,182 [sor7] INFO  RequestContext - URL: '/isomorphic/skins/Enterprise/images/Window/window_BR.png', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,180 [sor8] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_TR.png
                    === 2011-01-07 13:02:20,179 [sor4] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_L.png
                    === 2011-01-07 13:02:20,184 [sor1] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_BL.png
                    === 2011-01-07 13:02:20,183 [sor2] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_B.png
                    === 2011-01-07 13:02:20,185 [sor7] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/skins/Enterprise/images/Window/window_BR.png
                    === 2011-01-07 13:02:20,193 [sor3] INFO  RequestContext - URL: '/isomorphic/system/development/ISC_ServerLogViewer.js', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,195 [sor3] INFO  Download - Using gzipped form of request file: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/system/development/ISC_ServerLogViewer.js
                    === 2011-01-07 13:02:20,197 [sor3] INFO  Download - done streaming: C:/SmartClient_SC_SNAPSHOT-2011-01-05/smartclientSDK/isomorphic/system/development/ISC_ServerLogViewer.js
                    === 2011-01-07 13:02:20,333 [sor4] INFO  RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    === 2011-01-07 13:02:20,341 [sor4] INFO  Compression - /isomorphic/IDACall: 81 -> 86 bytes
                    === 2011-01-07 13:02:20,475 [sor8] INFO  RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                    Here's the code I have.

                    First the Entity -
                    Code:
                    package com.teamsense.backoffice.model.obj.rivers;
                    
                    import com.felees.hbnpojogen.persistence.IPojoGenEntity;
                    import com.teamsense.backoffice.model.obj.rivers.iface.IAddress;
                    import java.io.Serializable;
                    import java.util.Collections;
                    import java.util.Date;
                    import java.util.Map;
                    import java.util.WeakHashMap;
                    import javax.persistence.Column;
                    import javax.persistence.Entity;
                    import javax.persistence.Id;
                    import javax.persistence.Table;
                    import javax.persistence.Transient;
                    import org.hibernate.proxy.HibernateProxy;
                    
                    
                    /** 
                     * Object mapping for hibernate-handled table: address.
                     * @author autogenerated
                     */
                    
                    @Entity
                    @Table(name = "address", catalog = "rivers")
                    public class Address implements Cloneable, Serializable, IPojoGenEntity, IAddress {
                    
                    	/** Serial Version UID. */
                    	private static final long serialVersionUID = -558983402L;
                    
                    	/** Use a WeakHashMap so entries will be garbage collected once all entities 
                    		referring to a saved hash are garbage collected themselves. */
                    	private static final Map<Serializable, Integer> SAVED_HASHES =
                    		Collections.synchronizedMap(new WeakHashMap<Serializable, Integer>());
                    	
                    	/** hashCode temporary storage. */
                    	private volatile Integer hashCode;
                    	
                    
                    	/** Field mapping. */
                    	private Integer access;
                    	/** Field mapping. */
                    	private Integer account;
                    	/** Field mapping. */
                    	private Integer accountPtrType;
                    	/** Field mapping. */
                    	private String address1;
                    	/** Field mapping. */
                    	private String address2;
                    	/** Field mapping. */
                    	private String barcode;
                    	/** Field mapping. */
                    	private Integer branch;
                    	/** Field mapping. */
                    	private Integer company;
                    	/** Field mapping. */
                    	private String deleted;
                    	/** Field mapping. */
                    	private String faxNo;
                    	/** Field mapping. */
                    	private String freecallNo;
                    	/** Field mapping. */
                    	private Integer address;
                    	/** Field mapping. */
                    	private Date lastinserted;
                    	/** Field mapping. */
                    	private Date lastupdated;
                    	/** Field mapping. */
                    	private String mapReference;
                    	/** Field mapping. */
                    	private String phoneNo;
                    	/** Field mapping. */
                    	private String phoneNoSearch;
                    	/** Field mapping. */
                    	private Integer postCode;
                    	/** Field mapping. */
                    	private Integer sub;
                    	/**
                    	 * Default constructor, mainly for hibernate use.
                    	 */
                    	public Address() {
                    		// Default constructor
                    	} 
                    
                    	/** Constructor taking a given ID.
                    	 * @param id to set
                    	 */
                    	public Address(Integer address) {
                    		this.address = address;
                    	}
                    	
                     
                    
                    
                     
                    	/** Return the type of this class. Useful for when dealing with proxies.
                    	* @return Defining class.
                    	*/
                    	@Transient
                    	public Class<?> getClassType() {
                    		return Address.class;
                    	}
                     
                    
                        /**
                         * Return the value associated with the column: access.
                    	 * @return A Integer object (this.access)
                    	 */
                    	public Integer getAccess() {
                    		return this.access;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: access.
                    	 * @param access the access value you wish to set
                    	 */
                    	public void setAccess(final Integer access) {
                    		this.access = access;
                    	}
                    
                        /**
                         * Return the value associated with the column: account.
                    	 * @return A Integer object (this.account)
                    	 */
                    	public Integer getAccount() {
                    		return this.account;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: account.
                    	 * @param account the account value you wish to set
                    	 */
                    	public void setAccount(final Integer account) {
                    		this.account = account;
                    	}
                    
                        /**
                         * Return the value associated with the column: accountPtrType.
                    	 * @return A Integer object (this.accountPtrType)
                    	 */
                    	@Column( name = "account_ptr_type"  )
                    	public Integer getAccountPtrType() {
                    		return this.accountPtrType;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: accountPtrType.
                    	 * @param accountPtrType the accountPtrType value you wish to set
                    	 */
                    	public void setAccountPtrType(final Integer accountPtrType) {
                    		this.accountPtrType = accountPtrType;
                    	}
                    
                        /**
                         * Return the value associated with the column: address1.
                    	 * @return A String object (this.address1)
                    	 */
                    	@Column( length = 45  )
                    	public String getAddress1() {
                    		return this.address1;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: address1.
                    	 * @param address1 the address1 value you wish to set
                    	 */
                    	public void setAddress1(final String address1) {
                    		this.address1 = address1;
                    	}
                    
                        /**
                         * Return the value associated with the column: address2.
                    	 * @return A String object (this.address2)
                    	 */
                    	@Column( length = 45  )
                    	public String getAddress2() {
                    		return this.address2;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: address2.
                    	 * @param address2 the address2 value you wish to set
                    	 */
                    	public void setAddress2(final String address2) {
                    		this.address2 = address2;
                    	}
                    
                        /**
                         * Return the value associated with the column: barcode.
                    	 * @return A String object (this.barcode)
                    	 */
                    	@Column( length = 20  )
                    	public String getBarcode() {
                    		return this.barcode;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: barcode.
                    	 * @param barcode the barcode value you wish to set
                    	 */
                    	public void setBarcode(final String barcode) {
                    		this.barcode = barcode;
                    	}
                    
                        /**
                         * Return the value associated with the column: branch.
                    	 * @return A Integer object (this.branch)
                    	 */
                    	public Integer getBranch() {
                    		return this.branch;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: branch.
                    	 * @param branch the branch value you wish to set
                    	 */
                    	public void setBranch(final Integer branch) {
                    		this.branch = branch;
                    	}
                    
                        /**
                         * Return the value associated with the column: company.
                    	 * @return A Integer object (this.company)
                    	 */
                    	public Integer getCompany() {
                    		return this.company;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: company.
                    	 * @param company the company value you wish to set
                    	 */
                    	public void setCompany(final Integer company) {
                    		this.company = company;
                    	}
                    
                        /**
                         * Return the value associated with the column: deleted.
                    	 * @return A String object (this.deleted)
                    	 */
                    	@Column( length = 1  )
                    	public String getDeleted() {
                    		return this.deleted;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: deleted.
                    	 * @param deleted the deleted value you wish to set
                    	 */
                    	public void setDeleted(final String deleted) {
                    		this.deleted = deleted;
                    	}
                    
                        /**
                         * Return the value associated with the column: faxNo.
                    	 * @return A String object (this.faxNo)
                    	 */
                    	@Column( name = "fax_no", length = 20  )
                    	public String getFaxNo() {
                    		return this.faxNo;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: faxNo.
                    	 * @param faxNo the faxNo value you wish to set
                    	 */
                    	public void setFaxNo(final String faxNo) {
                    		this.faxNo = faxNo;
                    	}
                    
                        /**
                         * Return the value associated with the column: freecallNo.
                    	 * @return A String object (this.freecallNo)
                    	 */
                    	@Column( name = "freecall_no", length = 20  )
                    	public String getFreecallNo() {
                    		return this.freecallNo;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: freecallNo.
                    	 * @param freecallNo the freecallNo value you wish to set
                    	 */
                    	public void setFreecallNo(final String freecallNo) {
                    		this.freecallNo = freecallNo;
                    	}
                    
                        /**
                         * Return the value associated with the column: id.
                    	 * @return A Integer object (this.id)
                    	 */
                        @Id 
                    	@Column( name = "address", nullable = false  )
                    	public Integer getAddress() {
                    		return this.address;		
                    	}
                      
                        /**  
                         * Set the value related to the column: id.
                    	 * @param id the id value you wish to set
                    	 */
                    	public void setAddress(final Integer address) {
                    		// If we've just been persisted and hashCode has been
                    		// returned then make sure other entities with this
                    		// ID return the already returned hash code
                    		if ( (this.address == null || this.address == 0) &&
                    				(address != null) &&
                    				(this.hashCode != null) ) {
                    			SAVED_HASHES.put( address, this.hashCode );
                    		}
                    		this.address = address;
                    	}
                    
                        /**
                         * Return the value associated with the column: lastinserted.
                    	 * @return A Date object (this.lastinserted)
                    	 */
                    	public Date getLastinserted() {
                    		return this.lastinserted;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: lastinserted.
                    	 * @param lastinserted the lastinserted value you wish to set
                    	 */
                    	public void setLastinserted(final Date lastinserted) {
                    		this.lastinserted = lastinserted;
                    	}
                    
                        /**
                         * Return the value associated with the column: lastupdated.
                    	 * @return A Date object (this.lastupdated)
                    	 */
                    	public Date getLastupdated() {
                    		return this.lastupdated;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: lastupdated.
                    	 * @param lastupdated the lastupdated value you wish to set
                    	 */
                    	public void setLastupdated(final Date lastupdated) {
                    		this.lastupdated = lastupdated;
                    	}
                    
                        /**
                         * Return the value associated with the column: mapReference.
                    	 * @return A String object (this.mapReference)
                    	 */
                    	@Column( name = "map_reference", length = 20  )
                    	public String getMapReference() {
                    		return this.mapReference;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: mapReference.
                    	 * @param mapReference the mapReference value you wish to set
                    	 */
                    	public void setMapReference(final String mapReference) {
                    		this.mapReference = mapReference;
                    	}
                    
                        /**
                         * Return the value associated with the column: phoneNo.
                    	 * @return A String object (this.phoneNo)
                    	 */
                    	@Column( name = "phone_no", length = 20  )
                    	public String getPhoneNo() {
                    		return this.phoneNo;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: phoneNo.
                    	 * @param phoneNo the phoneNo value you wish to set
                    	 */
                    	public void setPhoneNo(final String phoneNo) {
                    		this.phoneNo = phoneNo;
                    	}
                    
                        /**
                         * Return the value associated with the column: phoneNoSearch.
                    	 * @return A String object (this.phoneNoSearch)
                    	 */
                    	@Column( name = "phone_no_search", length = 20  )
                    	public String getPhoneNoSearch() {
                    		return this.phoneNoSearch;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: phoneNoSearch.
                    	 * @param phoneNoSearch the phoneNoSearch value you wish to set
                    	 */
                    	public void setPhoneNoSearch(final String phoneNoSearch) {
                    		this.phoneNoSearch = phoneNoSearch;
                    	}
                    
                        /**
                         * Return the value associated with the column: postCode.
                    	 * @return A Integer object (this.postCode)
                    	 */
                    	@Column( name = "post_code"  )
                    	public Integer getPostCode() {
                    		return this.postCode;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: postCode.
                    	 * @param postCode the postCode value you wish to set
                    	 */
                    	public void setPostCode(final Integer postCode) {
                    		this.postCode = postCode;
                    	}
                    
                        /**
                         * Return the value associated with the column: sub.
                    	 * @return A Integer object (this.sub)
                    	 */
                    	public Integer getSub() {
                    		return this.sub;
                    		
                    	}
                    	
                    
                      
                        /**  
                         * Set the value related to the column: sub.
                    	 * @param sub the sub value you wish to set
                    	 */
                    	public void setSub(final Integer sub) {
                    		this.sub = sub;
                    	}
                    
                    
                       /**
                        * Deep copy.
                    	* @return cloned object
                    	* @throws CloneNotSupportedException on error
                        */
                        @Override
                        public Address clone() throws CloneNotSupportedException {
                    		
                            final Address copy = (Address)super.clone();
                    
                    		copy.setAccess(this.getAccess());
                    		copy.setAccount(this.getAccount());
                    		copy.setAccountPtrType(this.getAccountPtrType());
                    		copy.setAddress1(this.getAddress1());
                    		copy.setAddress2(this.getAddress2());
                    		copy.setBarcode(this.getBarcode());
                    		copy.setBranch(this.getBranch());
                    		copy.setCompany(this.getCompany());
                    		copy.setDeleted(this.getDeleted());
                    		copy.setFaxNo(this.getFaxNo());
                    		copy.setFreecallNo(this.getFreecallNo());
                    		copy.setAddress(this.getAddress());
                    		copy.setLastinserted(this.getLastinserted());
                    		copy.setLastupdated(this.getLastupdated());
                    		copy.setMapReference(this.getMapReference());
                    		copy.setPhoneNo(this.getPhoneNo());
                    		copy.setPhoneNoSearch(this.getPhoneNoSearch());
                    		copy.setPostCode(this.getPostCode());
                    		copy.setSub(this.getSub());
                    		return copy;
                    	}
                    	
                    
                    
                    	/** Provides toString implementation.
                    	 * @see java.lang.Object#toString()
                    	 * @return String representation of this class.
                    	 */
                    	@Override
                    	public String toString() {
                    		StringBuffer sb = new StringBuffer();
                    		
                    		sb.append("access: " + this.getAccess() + ", ");
                    		sb.append("account: " + this.getAccount() + ", ");
                    		sb.append("accountPtrType: " + this.getAccountPtrType() + ", ");
                    		sb.append("address1: " + this.getAddress1() + ", ");
                    		sb.append("address2: " + this.getAddress2() + ", ");
                    		sb.append("barcode: " + this.getBarcode() + ", ");
                    		sb.append("branch: " + this.getBranch() + ", ");
                    		sb.append("company: " + this.getCompany() + ", ");
                    		sb.append("deleted: " + this.getDeleted() + ", ");
                    		sb.append("faxNo: " + this.getFaxNo() + ", ");
                    		sb.append("freecallNo: " + this.getFreecallNo() + ", ");
                    		sb.append("id: " + this.getId() + ", ");
                    		sb.append("lastinserted: " + this.getLastinserted() + ", ");
                    		sb.append("lastupdated: " + this.getLastupdated() + ", ");
                    		sb.append("mapReference: " + this.getMapReference() + ", ");
                    		sb.append("phoneNo: " + this.getPhoneNo() + ", ");
                    		sb.append("phoneNoSearch: " + this.getPhoneNoSearch() + ", ");
                    		sb.append("postCode: " + this.getPostCode() + ", ");
                    		sb.append("sub: " + this.getSub());
                    		return sb.toString();		
                    	}
                    
                    
                    	/** Equals implementation. 
                    	 * @see java.lang.Object#equals(java.lang.Object)
                    	 * @param aThat Object to compare with
                    	 * @return true/false
                    	 */
                    	@Override
                    	public boolean equals(final Object aThat) {
                    		Object proxyThat = aThat;
                    		
                    		if ( this == aThat ) {
                    			 return true;
                    		}
                    
                    		
                    		if (aThat instanceof HibernateProxy) {
                     			// narrow down the proxy to the class we are dealing with.
                     			try {
                    				proxyThat = ((HibernateProxy) aThat).getHibernateLazyInitializer().getImplementation(); 
                    			} catch (org.hibernate.ObjectNotFoundException e) {
                    				return false;
                    		   	}
                    		}
                    		if (aThat == null)  {
                    			 return false;
                    		}
                    		
                    		final Address that; 
                    		try {
                    			that = (Address) proxyThat;
                    			if ( !(that.getClassType().equals(this.getClassType()))){
                    				return false;
                    			}
                    		} catch (org.hibernate.ObjectNotFoundException e) {
                    				return false;
                    		} catch (ClassCastException e) {
                    				return false;
                    		}
                    		
                    		
                    		boolean result = true;
                    		result = result && (((this.getId() == null) && ( that.getId() == null)) || (this.getId() != null  && this.getId().equals(that.getId())));
                    		result = result && (((getAccess() == null) && (that.getAccess() == null)) || (getAccess() != null && getAccess().equals(that.getAccess())));
                    		result = result && (((getAccount() == null) && (that.getAccount() == null)) || (getAccount() != null && getAccount().equals(that.getAccount())));
                    		result = result && (((getAccountPtrType() == null) && (that.getAccountPtrType() == null)) || (getAccountPtrType() != null && getAccountPtrType().equals(that.getAccountPtrType())));
                    		result = result && (((getAddress1() == null) && (that.getAddress1() == null)) || (getAddress1() != null && getAddress1().equals(that.getAddress1())));
                    		result = result && (((getAddress2() == null) && (that.getAddress2() == null)) || (getAddress2() != null && getAddress2().equals(that.getAddress2())));
                    		result = result && (((getBarcode() == null) && (that.getBarcode() == null)) || (getBarcode() != null && getBarcode().equals(that.getBarcode())));
                    		result = result && (((getBranch() == null) && (that.getBranch() == null)) || (getBranch() != null && getBranch().equals(that.getBranch())));
                    		result = result && (((getCompany() == null) && (that.getCompany() == null)) || (getCompany() != null && getCompany().equals(that.getCompany())));
                    		result = result && (((getDeleted() == null) && (that.getDeleted() == null)) || (getDeleted() != null && getDeleted().equals(that.getDeleted())));
                    		result = result && (((getFaxNo() == null) && (that.getFaxNo() == null)) || (getFaxNo() != null && getFaxNo().equals(that.getFaxNo())));
                    		result = result && (((getFreecallNo() == null) && (that.getFreecallNo() == null)) || (getFreecallNo() != null && getFreecallNo().equals(that.getFreecallNo())));
                    		result = result && (((getLastinserted() == null) && (that.getLastinserted() == null)) || (getLastinserted() != null && getLastinserted().equals(that.getLastinserted())));
                    		result = result && (((getLastupdated() == null) && (that.getLastupdated() == null)) || (getLastupdated() != null && getLastupdated().equals(that.getLastupdated())));
                    		result = result && (((getMapReference() == null) && (that.getMapReference() == null)) || (getMapReference() != null && getMapReference().equals(that.getMapReference())));
                    		result = result && (((getPhoneNo() == null) && (that.getPhoneNo() == null)) || (getPhoneNo() != null && getPhoneNo().equals(that.getPhoneNo())));
                    		result = result && (((getPhoneNoSearch() == null) && (that.getPhoneNoSearch() == null)) || (getPhoneNoSearch() != null && getPhoneNoSearch().equals(that.getPhoneNoSearch())));
                    		result = result && (((getPostCode() == null) && (that.getPostCode() == null)) || (getPostCode() != null && getPostCode().equals(that.getPostCode())));
                    		result = result && (((getSub() == null) && (that.getSub() == null)) || (getSub() != null && getSub().equals(that.getSub())));
                    		return result;
                    	}
                    	
                    	/** Calculate the hashcode.
                    	 * @see java.lang.Object#hashCode()
                    	 * @return a calculated number
                    	 */
                    	@Override
                    	public int hashCode() {
                    		if ( this.hashCode == null ) {
                    			synchronized ( this ) {
                    				if ( this.hashCode == null ) {
                    					Integer newHashCode = null;
                    
                    					if ( getAddress() != null ) {
                    						newHashCode = SAVED_HASHES.get( getAddress() );
                    					}
                    					
                    					if ( newHashCode == null ) {
                    						if ( getAddress() != null && getAddress() != 0) {
                    							newHashCode = getAddress();
                    						} else {
                    							newHashCode = super.hashCode();
                    
                    						}
                    					}
                    					
                    					this.hashCode = newHashCode;
                    				}
                    			}
                    		}
                    	return this.hashCode;
                    	}
                    
                    	@Override
                    	public Serializable getId() {
                    		return getAddress();
                    	}
                    }
                    The web page -
                    Code:
                    
                    <HTML><HEAD><TITLE>deleteme</TITLE>
                    <SCRIPT>window.isomorphicDir='../../../isomorphic/';</SCRIPT>
                    <SCRIPT SRC=../../../isomorphic/system/modules/ISC_Core.js?isc_version=SC_SNAPSHOT-2010-12-22.js></SCRIPT><SCRIPT>isc._lastModule='Core';</SCRIPT>
                    <SCRIPT SRC=../../../isomorphic/system/modules/ISC_Foundation.js?isc_version=SC_SNAPSHOT-2010-12-22.js></SCRIPT><SCRIPT>isc._lastModule='Foundation';</SCRIPT>
                    <SCRIPT SRC=../../../isomorphic/system/modules/ISC_Containers.js?isc_version=SC_SNAPSHOT-2010-12-22.js></SCRIPT><SCRIPT>isc._lastModule='Containers';</SCRIPT>
                    <SCRIPT SRC=../../../isomorphic/system/modules/ISC_Grids.js?isc_version=SC_SNAPSHOT-2010-12-22.js></SCRIPT><SCRIPT>isc._lastModule='Grids';</SCRIPT>
                    <SCRIPT SRC=../../../isomorphic/system/modules/ISC_Forms.js?isc_version=SC_SNAPSHOT-2010-12-22.js></SCRIPT><SCRIPT>isc._lastModule='Forms';</SCRIPT>
                    <SCRIPT SRC=../../../isomorphic/system/modules/ISC_DataBinding.js?isc_version=SC_SNAPSHOT-2010-12-22.js></SCRIPT><SCRIPT>isc._lastModule='DataBinding';</SCRIPT>
                    <SCRIPT SRC=../../../isomorphic/skins/SilverWave/load_skin.js?isc_version=SC_SNAPSHOT-2010-12-22.js></SCRIPT>
                    
                    </HEAD><BODY>
                    <SCRIPT>
                    isc.Page.setAppImgDir("../graphics/");
                    
                    
                    isc.DataSource.create({
                        ID:"address",
                        generatedBy:"SC_SNAPSHOT-2010-12-22/EVAL Deployment 2010-12-22",
                        serverType:"generic",
                        mappedBeanClass:"com.teamsense.backoffice.model.obj.rivers.Address",
                        fields:{
                            address:{
                                name:"address",
                                primaryKey:true,
                                type:"sequence",
                                hidden:true
                            },
                            sub:{
                                name:"sub",
                                type:"integer"
                            },
                            mapReference:{
                                name:"mapReference",
                                type:"text"
                            },
                            postCode:{
                                name:"postCode",
                                type:"integer"
                            },
                            address1:{
                                name:"address1",
                                type:"text"
                            },
                            barcode:{
                                name:"barcode",
                                type:"text"
                            },
                            freecallNo:{
                                name:"freecallNo",
                                type:"text"
                            },
                            lastupdated:{
                                name:"lastupdated",
                                type:"date"
                            },
                            address2:{
                                name:"address2",
                                type:"text"
                            },
                            access:{
                                name:"access",
                                type:"integer"
                            },
                            deleted:{
                                name:"deleted",
                                type:"text"
                            },
                            phoneNoSearch:{
                                name:"phoneNoSearch",
                                type:"text"
                            },
                            phoneNo:{
                                name:"phoneNo",
                                type:"text"
                            },
                            accountPtrType:{
                                name:"accountPtrType",
                                type:"integer"
                            },
                            company:{
                                name:"company",
                                type:"integer"
                            },
                            lastinserted:{
                                name:"lastinserted",
                                type:"date"
                            },
                            account:{
                                name:"account",
                                type:"integer"
                            },
                            branch:{
                                name:"branch",
                                type:"integer"
                            },
                            faxNo:{
                                name:"faxNo",
                                type:"text"
                            }
                        }
                    })
                    
                    
                    
                    isc.DynamicForm.create({
                        ID:"DynamicForm0",
                        autoDraw:false,
                        dataSource:"address",
                        fields:[
                            {
                                name:"postCode",
                                title:"Post Code",
                                _constructor:"TextItem"
                            },
                            {
                                name:"address1",
                                title:"Address1",
                                _constructor:"TextItem"
                            },
                            {
                                name:"address2",
                                title:"Address2",
                                _constructor:"TextItem"
                            },
                            {
                                name:"company",
                                title:"Company",
                                _constructor:"TextItem"
                            },
                            {
                                name:"account",
                                title:"Account",
                                _constructor:"TextItem"
                            },
                            {
                                name:"SubmitItem0",
                                title:"Submit",
                                click:{
                                    target:"DynamicForm0",
                                    name:"saveData",
                                    title:"Save Data"
                                },
                                _constructor:"SubmitItem"
                            }
                        ],
                        width:250
                    })
                    
                    
                    
                    isc.DataView.create({
                        ID:"DataView0",
                        autoDraw:true,
                        overflow:"hidden",
                        members:[
                            DynamicForm0
                        ],
                        width:"100%",
                        height:"100%"
                    })
                    </SCRIPT>
                    </BODY></HTML>
                    The hibernate mapping file -

                    Code:
                    <?xml version="1.0"?>
                    <!DOCTYPE hibernate-mapping PUBLIC
                            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
                    
                    <hibernate-mapping>
                        <class name="com.teamsense.backoffice.model.obj.rivers.Address" table="address">
                            <id name="address" column="address" type="long">
                                <generator class="identity"/>
                            </id>
                            <property name="access" column="ACCESS" type="integer" />
                            <property name="account" column="ACCOUNT" type="integer" />
                            <property name="accountPtrType" column="ACCOUTN_PTR_TYPE" type="string" />
                            <property name="address1" column="ADDRESS1" type="string" />
                            <property name="address2" column="ADDRESS2" type="string" />
                            <property name="barcode" column="BARCODE" type="string" />
                            <property name="branch" column="BRANCH" type="integer" />
                            <property name="company" column="COMPANY" type="integer" />
                            <property name="deleted" column="DELETED" type="string" />
                            <property name="faxNo" column="FAX_NO" type="string" />
                            <property name="freecallNo" column="FREECALL_NO" type="string" />        
                            <property name="lastinserted" column="LASTINSERTED" type="date" />
                            <property name="lastupdated" column="LASTUPDATED" type="date" />
                            <property name="mapReference" column="MAP_REFERENCE" type="string" />
                            <property name="phoneNo" column="PHONE_NO" type="string" />
                            <property name="phoneNoSearch" column="PHONE_NO_SEARCH" type="string" />
                            <property name="postCode" column="POST_CODE" type="integer" />
                            <property name="sub" column="SUB" type="integer" />
                        </class>
                    </hibernate-mapping>
                    The datasource file -

                    Code:
                    <DataSource 
                    	ID="address" 
                    	serverType="hibernate" 
                    	tableName="address"
                    	mappedBeanClass="com.teamsense.backoffice.model.obj.rivers.Address">
                    	<fields>
                    		<field name="address" type="sequence" hidden="true" primaryKey="true"></field>
                    		<field name="sub" type="integer"></field>
                    		<field name="mapReference" type="text"></field>
                    		<field name="postCode" type="integer"></field>
                    		<field name="address1" type="text"></field>
                    		<field name="barcode" type="text"></field>
                    		<field name="freecallNo" type="text"></field>
                    		<field name="lastupdated" type="date"></field>
                    		<field name="address2" type="text"></field>
                    		<field name="access" type="integer"></field>
                    		<field name="deleted" type="text"></field>
                    		<field name="phoneNoSearch" type="text"></field>
                    		<field name="phoneNo" type="text"></field>
                    		<field name="accountPtrType" type="integer"></field>
                    		<field name="company" type="integer"></field>
                    		<field name="lastinserted" type="date"></field>
                    		<field name="account" type="integer"></field>
                    		<field name="branch" type="integer"></field>
                    		<field name="faxNo" type="text"></field>
                    	</fields>    
                    </DataSource>

                    Again, any help to get this demonstration working for my boss would be greatly appreciated.

                    Comment


                      #11
                      What led you down this path? In the QuickStart guide we recommend the SQLDataSource, which is far simpler (look at all the boilerplate code you went and wrote - no need for that).

                      Look in the QuickStart Guide under "Adding DMI Business Logic" - the "Take related actions" bullet describes doing an operation on a second DataSource. You need about 4 lines of Java code to do what you want with the SQLDataSource.

                      As far this error from Hibernate, it indicates that SmartGWT passed one of your POJOs to HibernateSession.saveOrUpdate(), and although that POJO was correctly populated with the postCode submitted by the form, Hibernate generated bad SQL. Something is wrong in your Hibernate mapping - it's not obvious at a glance what's wrong, but there's no reason to troubleshoot it when it's not the recommended path and is profoundly overcomplicated by comparison.

                      Comment


                        #12
                        Well I tried deleting everything GWT + isomorphic from my computer and installing the Evaluation SmartClient from scratch, then copied across my work files with the DMI code, and I still received
                        "java.lang.NoClassDefFoundError: com/isomorphic/datasource/DSRequest",
                        so I gave up on that avenue. It can't be a conflict with SmartGWT because it no longer exists on my computer.

                        Plus I had previously generated all the Hibernate code, so I figured that would be another avenue worth trying.

                        I haven't tried setting up Eclipse because I know that will take another day that I don't have.

                        This is the DOS console with the fresh installation when I try to run my DMI code -

                        Code:
                        === 2011-01-07 14:50:55,810 [sor4] INFO  Compression - /tools/visualBuilder/vbOp
                        erations.jsp: 143 -> 110 bytes
                        === 2011-01-07 14:50:55,857 [sor1] DEBUG AppBase - [builtinApplication.saveFile]
                         No userTypes defined, allowing anyone access to all operations for this applica
                        tion
                        === 2011-01-07 14:50:55,859 [sor1] DEBUG AppBase - [builtinApplication.saveFile]
                         No public zero-argument method named '_saveFile' found, performing generic data
                        source operation
                        === 2011-01-07 14:50:55,812 [sor3] WARN  FilesystemDataSource - [builtinApplicat
                        ion.Filesystem_fetch] using path: /tools/visualBuilder/workspace/deleteme.xml
                        === 2011-01-07 14:50:55,863 [sor1] DEBUG RPCManager - Content type for RPC trans
                        action: text/plain; charset=UTF-8
                        === 2011-01-07 14:50:55,864 [sor3] INFO  DSResponse - [builtinApplication.Filesy
                        stem_fetch] DSResponse: List with 2 items
                        === 2011-01-07 14:50:55,865 [sor3] DEBUG RPCManager - Content type for RPC trans
                        action: text/plain; charset=UTF-8
                        === 2011-01-07 14:50:55,865 [sor1] DEBUG RPCManager - non-DMI response, dropExtr
                        aFields: false
                        === 2011-01-07 14:50:55,865 [sor3] DEBUG RPCManager - non-DMI response, dropExtr
                        aFields: false
                        === 2011-01-07 14:50:55,869 [sor1] INFO  Compression - /tools/visualBuilder/vbOp
                        erations.jsp: 143 -> 110 bytes
                        === 2011-01-07 14:50:55,872 [sor3] INFO  Compression - /tools/visualBuilder/vbOp
                        erations.jsp: 568 -> 286 bytes
                        === 2011-01-07 14:50:56,475 [sor2] INFO  RequestContext - URL: '/tools/visualBui
                        lder/vbOperations.jsp', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en
                        -US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encodi
                        ng header
                        === 2011-01-07 14:50:56,479 [sor2] DEBUG XML - Parsed XML from (in memory stream
                        ): 2ms
                        === 2011-01-07 14:50:56,483 [sor2] DEBUG RPCManager - Processing 1 requests.
                        === 2011-01-07 14:50:56,485 [sor2] DEBUG RPCManager - Request #1 (DSRequest) pay
                        load: {
                            criteria:{
                                fileFilter:".xml$",
                                parentID:"[VBWORKSPACE]"
                            },
                            operationConfig:{
                                dataSource:"Filesystem",
                                operationType:"fetch",
                                textMatchStyle:"substring"
                            },
                            startRow:0,
                            endRow:75,
                            sortBy:[
                                "name"
                            ],
                            componentId:"isc_TLoadFileDialog_0_directoryListing",
                            appID:"builtinApplication",
                            operation:"Filesystem_fetch",
                            oldValues:{
                                fileFilter:".xml$",
                                parentID:"[VBWORKSPACE]"
                            }
                        }
                        === 2011-01-07 14:50:56,488 [sor2] DEBUG AppBase - [builtinApplication.Filesyste
                        m_fetch] No userTypes defined, allowing anyone access to all operations for this
                         application
                        === 2011-01-07 14:50:56,489 [sor2] DEBUG AppBase - [builtinApplication.Filesyste
                        m_fetch] No public zero-argument method named '_Filesystem_fetch' found, perform
                        ing generic datasource operation
                        === 2011-01-07 14:50:56,489 [sor2] DEBUG FilesystemDataSource - [builtinApplicat
                        ion.Filesystem_fetch] returnContent is: false
                        === 2011-01-07 14:50:56,490 [sor2] DEBUG FilesystemDataSource - [builtinApplicat
                        ion.Filesystem_fetch] listing files at: /isomorphic/../tools/visualBuilder/works
                        pace
                        === 2011-01-07 14:50:56,491 [sor2] WARN  FilesystemDataSource - [builtinApplicat
                        ion.Filesystem_fetch] using path: /tools/visualBuilder/workspace/BackOffice.xml
                        === 2011-01-07 14:50:56,492 [sor2] WARN  FilesystemDataSource - [builtinApplicat
                        ion.Filesystem_fetch] using path: /tools/visualBuilder/workspace/deleteme.xml
                        === 2011-01-07 14:50:56,493 [sor2] INFO  DSResponse - [builtinApplication.Filesy
                        stem_fetch] DSResponse: List with 2 items
                        === 2011-01-07 14:50:56,494 [sor2] DEBUG RPCManager - Content type for RPC trans
                        action: text/plain; charset=UTF-8
                        === 2011-01-07 14:50:56,495 [sor2] DEBUG RPCManager - non-DMI response, dropExtr
                        aFields: false
                        === 2011-01-07 14:50:56,498 [sor2] INFO  Compression - /tools/visualBuilder/vbOp
                        erations.jsp: 568 -> 286 bytes
                        === 2011-01-07 14:50:57,276 [sor4] INFO  RequestContext - URL: '/tools/visualBui
                        lder/workspace/deleteme.jsp', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6
                        .1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-
                        Encoding header
                        === 2011-01-07 14:50:57,355 [sor4] DEBUG LoadISCTag - isomorphicURI not specifie
                        d in tag, defaulting to: ../../../isomorphic/
                        === 2011-01-07 14:50:57,356 [sor4] DEBUG XML - Parsed XML from (in memory stream
                        ): 0ms
                        === 2011-01-07 14:50:57,358 [sor4] DEBUG ValidationContext - Adding validation e
                        rrors at path '/DataSource': {errorMessage=Field is required}
                        === 2011-01-07 14:50:57,359 [sor4] WARN  Validation - Validation errors validati
                        ng a 'DataSource':
                        {
                            "/DataSource":{
                                recordPath:"/DataSource",
                                ID:{
                                    errorMessage:"Field is required"
                                }
                            }
                        }
                        === 2011-01-07 14:50:57,411 [sor4] INFO  JSSyntaxScannerFilter - /tools/visualBu
                        ilder/workspace/deleteme.jsp: scanning <script> tags in html output
                        === 2011-01-07 14:50:57,412 [sor4] INFO  Compression - /tools/visualBuilder/work
                        space/deleteme.jsp: 6092 -> 1155 bytes
                        === 2011-01-07 14:50:59,246 [sor1] INFO  RequestContext - URL: '/isomorphic/IDAC
                        all', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13)
                        Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                        === 2011-01-07 14:50:59,248 [sor1] DEBUG XML - Parsed XML from (in memory stream
                        ): 0ms
                        === 2011-01-07 14:50:59,252 [sor3] INFO  RequestContext - URL: '/isomorphic/IDAC
                        all', User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13)
                        Gecko/20101203 Firefox/3.6.13': Moz (Gecko) with Accept-Encoding header
                        === 2011-01-07 14:50:59,253 [sor1] DEBUG RPCManager - Processing 1 requests.
                        === 2011-01-07 14:50:59,254 [sor1] DEBUG RPCManager - Request #1 (DSRequest) pay
                        load: {
                            values:{
                                lastupdated:new Date(1294318800000),
                                lastinserted:new Date(1294318800000)
                            },
                            operationConfig:{
                                dataSource:"address_bean",
                                operationType:"add"
                            },
                            componentId:"DynamicForm0",
                            appID:"builtinApplication",
                            operation:"address_bean_add",
                            oldValues:{
                            },
                            criteria:{
                            }
                        }
                        === 2011-01-07 14:50:59,254 [sor3] DEBUG XML - Parsed XML from (in memory stream
                        ): 1ms
                        === 2011-01-07 14:50:59,255 [sor1] INFO  IDACall - Performing 1 operation(s)
                        === 2011-01-07 14:50:59,258 [sor3] DEBUG RPCManager - Processing 1 requests.
                        === 2011-01-07 14:50:59,259 [sor3] DEBUG RPCManager - Request #1 (DSRequest) pay
                        load: {
                            values:{
                                lastupdated:new Date(1294318800000),
                                lastinserted:new Date(1294318800000)
                            },
                            operationConfig:{
                                dataSource:"address_bean",
                                operationType:"add"
                            },
                            componentId:"DynamicForm0",
                            appID:"builtinApplication",
                            operation:"address_bean_add",
                            oldValues:{
                            },
                            criteria:{
                            }
                        }
                        === 2011-01-07 14:50:59,260 [sor1] ERROR IDACall - Top-level servlet error:
                        java.lang.NoClassDefFoundError: com/isomorphic/datasource/DSRequest
                                at java.lang.Class.getDeclaredMethods0(Native Method)
                                at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
                                at java.lang.Class.privateGetPublicMethods(Class.java:2547)
                                at java.lang.Class.getMethods(Class.java:1410)
                                at com.isomorphic.rpc.ServerObject.findMethod(ServerObject.java:281)
                                at com.isomorphic.rpc.ServerObject.getMethod(ServerObject.java:273)
                                at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:45
                        9)
                                at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64
                        )
                                at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1440)
                                at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
                                at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:130
                        )
                                at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:95)
                                at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54)
                                at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
                                at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
                                at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
                        icationFilterChain.java:269)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
                        ilterChain.java:188)
                                at com.isomorphic.js.JSSyntaxScannerFilter.doFilter(JSSyntaxScannerFilte
                        r.java:241)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
                        icationFilterChain.java:215)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
                        ilterChain.java:188)
                                at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.j
                        ava:259)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
                        icationFilterChain.java:215)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
                        ilterChain.java:188)
                                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
                        alve.java:210)
                                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
                        alve.java:174)
                                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
                        ava:127)
                                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
                        ava:117)
                                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
                        ve.java:108)
                                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
                        a:151)
                                at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
                        :870)
                                at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
                        rocessConnection(Http11BaseProtocol.java:665)
                                at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
                        int.java:528)
                                at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
                        lowerWorkerThread.java:81)
                                at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
                        ool.java:685)
                                at java.lang.Thread.run(Thread.java:619)
                        Caused by: java.lang.ClassNotFoundException: com.isomorphic.datasource.DSRequest
                        
                                at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
                                at java.security.AccessController.doPrivileged(Native Method)
                                at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
                                at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                                at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
                                at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
                                at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
                                ... 36 more
                        === 2011-01-07 14:50:59,263 [sor3] INFO  IDACall - Performing 1 operation(s)
                        === 2011-01-07 14:50:59,302 [sor3] ERROR IDACall - Top-level servlet error:
                        java.lang.NoClassDefFoundError: com/isomorphic/datasource/DSRequest
                                at java.lang.Class.getDeclaredMethods0(Native Method)
                                at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
                                at java.lang.Class.privateGetPublicMethods(Class.java:2547)
                                at java.lang.Class.getMethods(Class.java:1410)
                                at com.isomorphic.rpc.ServerObject.findMethod(ServerObject.java:281)
                                at com.isomorphic.rpc.ServerObject.getMethod(ServerObject.java:273)
                                at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:45
                        9)
                                at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64
                        )
                                at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1440)
                                at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
                                at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:130
                        )
                                at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:95)
                                at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54)
                                at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
                                at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
                                at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
                        icationFilterChain.java:269)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
                        ilterChain.java:188)
                                at com.isomorphic.js.JSSyntaxScannerFilter.doFilter(JSSyntaxScannerFilte
                        r.java:241)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
                        icationFilterChain.java:215)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
                        ilterChain.java:188)
                                at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.j
                        ava:259)
                                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
                        icationFilterChain.java:215)
                                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
                        ilterChain.java:188)
                                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
                        alve.java:210)
                                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
                        alve.java:174)
                                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
                        ava:127)
                                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
                        ava:117)
                                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
                        ve.java:108)
                                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
                        a:151)
                                at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
                        :870)
                                at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
                        rocessConnection(Http11BaseProtocol.java:665)
                                at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
                        int.java:528)
                                at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
                        lowerWorkerThread.java:81)
                                at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
                        ool.java:685)
                                at java.lang.Thread.run(Thread.java:619)
                        Caused by: java.lang.ClassNotFoundException: com.isomorphic.datasource.DSRequest
                        
                                at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
                                at java.security.AccessController.doPrivileged(Native Method)
                                at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
                                at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                                at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
                                at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
                                at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
                                ... 36 more
                        === 2011-01-07 14:50:59,302 [sor1] INFO  Compression - /isomorphic/IDACall: 3546
                         -> 946 bytes
                        === 2011-01-07 14:50:59,342 [sor3] INFO  Compression - /isomorphic/IDACall: 3546
                         -> 946 bytes

                        Comment


                          #13
                          I assume the NoClassDefFoundError is simply an incorrect error message.
                          I've tested and proven that "supplyItemDMI.jsp" works okay, but when I try and run my own jsp in the same directory, I get the error message.

                          I put AddressPersistenceDMI.class into "\smartclientSDK\WEB-INF\classes" where I assume it will be picked up. So I can only imagine that SmartClient is not finding that file or something related.

                          Without a detailed error message I can't figure out what I'm doing wrong.

                          Comment


                            #14
                            Why are you back to SmartClient again? Didn't you previously want to use GWT?

                            That error isn't coming from SmartClient, it's coming from the JVM, and it suggests a classloader issue. It's not clear how you got into this state, possibly a bad JDK on your machine.

                            Instead of switching back and forth between different approaches, please just follow the recommended path: go ahead and download SmartGWT since that was what you first wanted to use, follow the instructions in the README including downloading Eclipse.

                            Having downloaded Eclipse, it takes less than 15 minutes to run through the setup instructions, not a day. And that's for someone semi-technical. Just stick to the recommendations, and you'll be up and running right away.

                            Comment


                              #15
                              I'm after the quickest, no-code way of building applications, but which still provides you the ability to code the database connectivity and DMI if necessary. Which I thought would mean SmartClient is the preferred option?

                              I was impressed with how quickly I could get a CRUD application up and running using SmartClient (which I was using all along), but was perplexed when I couldn't CRUD across tables.

                              What are the benefits of building SmartGWT applications over SmartClient?
                              Do I still have use of the Visual Builder tool? I've tried using the GWT desiger plugin for Eclipse and had too many problems with it.

                              Comment

                              Working...
                              X