function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
pankaj_kadam1.3905395707976055E12pankaj_kadam1.3905395707976055E12 

While I am trying to Update Salesforce object with Java code. I got error?

[InvalidSObjectFault [ApiQueryFault [ApiFault  exceptionCode='INVALID_TYPE'
exceptionMessage='Must send a concrete entity type.'
]
row='-1'
column='-1'
]
]

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:628)
at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:505)
at com.sforce.ws.transport.SoapConnection.parseDetail(SoapConnection.java:228)
at com.sforce.ws.transport.SoapConnection.createException(SoapConnection.java:202)
at com.sforce.ws.transport.SoapConnection.receive(SoapConnection.java:148)
at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:110)
at com.sforce.soap.enterprise.EnterpriseConnection.update(EnterpriseConnection.java:938)
at com.agc.AGCMiddleware.getExchangeRate(AGCMiddleware.java:1100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:144)
at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:139)
at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:837)
at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:273)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

My Code : 

System.out.println("Update the DatedConversionRate In Salesforce...");
      DatedConversionRate[] records = new DatedConversionRate[100];
      //SObject[] records = new SObject[100];
      try {
      QueryResult queryResults = connection.query("SELECT Id,ConversionRate,IsoCode,StartDate FROM DatedConversionRate");
      System.out.println("Number Of Records : "+queryResults.getRecords().length);
      if (queryResults.getSize() > 0) {
      for (int i=0;i<queryResults.getRecords().length;i++)
      {
      DatedConversionRate a = (DatedConversionRate)queryResults.getRecords()[i];
      System.out.println("Updating Id: " + a.getId() + " - IsoCode: "+a.getIsoCode());
      //a.setConversionRate(65.00);
      System.out.println("I : "+i);
      records[i] = new DatedConversionRate();
      //records[i].setConversionRate(a.getConversionRate());
      records[i].setConversionRate(65.22);
      records[i].setId(a.getId());
      SaveResult[] saveResults = connection.update(records);
      System.out.println("Record updated");
     
      }
      }
 
      } catch (Exception e) {
      e.printStackTrace();
      }
NehalNehal (Salesforce Developers) 
Hi,

Please refer to the links below that will give you more clear explanation on why this error occurs and will help you to get the error resolved at your end:

1.http://stackoverflow.com/questions/10326862/salesforce-api-error-on-update-invalid-type-must-send-a-concrete-entity
2.https://github.com/halorgium/dm-salesforce/issues/1
3.https://developer.salesforce.com/forums?id=906F00000008jCwIAI

Hope this helps.