Mark,
Still experiencing the same exception thrown at the same spot.
Here’s the stack trace:
{
"trace": [
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "FootprintsManager.java",
"nativeMethod": false,
"methodName": "updateFootprintForObject",
"className": "com.backendless.FootprintsManager$Inner",
"lineNumber": 369
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "FootprintsManager.java",
"nativeMethod": false,
"methodName": "updateFootprintForObject",
"className": "com.backendless.FootprintsManager$Inner",
"lineNumber": 357
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Persistence.java",
"nativeMethod": false,
"methodName": "save",
"className": "com.backendless.Persistence",
"lineNumber": 112
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "HeyStaxContactController.java",
"nativeMethod": false,
"methodName": "addContact",
"className": "com.oovoolabs.heystax.restAPI.user.HeyStaxContactController",
"lineNumber": 113
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "HeyStaxAPI.java",
"nativeMethod": false,
"methodName": "addNewContact",
"className": "com.oovoolabs.heystax.restAPI.HeyStaxAPI",
"lineNumber": 81
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "NativeMethodAccessorImpl.java",
"nativeMethod": true,
"methodName": "invoke0",
"className": "sun.reflect.NativeMethodAccessorImpl",
"lineNumber": -2
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "NativeMethodAccessorImpl.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "sun.reflect.NativeMethodAccessorImpl",
"lineNumber": 62
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "DelegatingMethodAccessorImpl.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"lineNumber": 43
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Method.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "java.lang.reflect.Method",
"lineNumber": 497
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Invocation.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "weborb.util.Invocation",
"lineNumber": 190
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Invocation.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "weborb.util.Invocation",
"lineNumber": 62
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ServiceInvocationTask.java",
"nativeMethod": false,
"methodName": "runImpl",
"className": "com.backendless.coderunner.runtime.task.ServiceInvocationTask",
"lineNumber": 93
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ExtendedRunnable.java",
"nativeMethod": false,
"methodName": "run",
"className": "com.backendless.coderunner.runtime.concurrent.ExtendedRunnable",
"lineNumber": 22
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Thread.java",
"nativeMethod": false,
"methodName": "run",
"className": "java.lang.Thread",
"lineNumber": 745
}
],
"cause": {
"___jsonclass": "java.lang.NoSuchFieldException",
"localizedMessage": null,
"cause": null,
"stackTrace": [
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Class.java",
"nativeMethod": false,
"methodName": "getDeclaredField",
"className": "java.lang.Class",
"lineNumber": 2070
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ReflectionUtil.java",
"nativeMethod": false,
"methodName": "getField",
"className": "com.backendless.utils.ReflectionUtil",
"lineNumber": 65
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ReflectionUtil.java",
"nativeMethod": false,
"methodName": "getField",
"className": "com.backendless.utils.ReflectionUtil",
"lineNumber": 71
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ReflectionUtil.java",
"nativeMethod": false,
"methodName": "getField",
"className": "com.backendless.utils.ReflectionUtil",
"lineNumber": 71
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ReflectionUtil.java",
"nativeMethod": false,
"methodName": "getFieldValue",
"className": "com.backendless.utils.ReflectionUtil",
"lineNumber": 39
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "FootprintsManager.java",
"nativeMethod": false,
"methodName": "updateFootprintForObject",
"className": "com.backendless.FootprintsManager$Inner",
"lineNumber": 261
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "FootprintsManager.java",
"nativeMethod": false,
"methodName": "updateFootprintForObject",
"className": "com.backendless.FootprintsManager$Inner",
"lineNumber": 357
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Persistence.java",
"nativeMethod": false,
"methodName": "save",
"className": "com.backendless.Persistence",
"lineNumber": 112
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "HeyStaxContactController.java",
"nativeMethod": false,
"methodName": "addContact",
"className": "com.oovoolabs.heystax.restAPI.user.HeyStaxContactController",
"lineNumber": 113
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "HeyStaxAPI.java",
"nativeMethod": false,
"methodName": "addNewContact",
"className": "com.oovoolabs.heystax.restAPI.HeyStaxAPI",
"lineNumber": 81
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "NativeMethodAccessorImpl.java",
"nativeMethod": true,
"methodName": "invoke0",
"className": "sun.reflect.NativeMethodAccessorImpl",
"lineNumber": -2
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "NativeMethodAccessorImpl.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "sun.reflect.NativeMethodAccessorImpl",
"lineNumber": 62
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "DelegatingMethodAccessorImpl.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "sun.reflect.DelegatingMethodAccessorImpl",
"lineNumber": 43
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Method.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "java.lang.reflect.Method",
"lineNumber": 497
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Invocation.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "weborb.util.Invocation",
"lineNumber": 190
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Invocation.java",
"nativeMethod": false,
"methodName": "invoke",
"className": "weborb.util.Invocation",
"lineNumber": 62
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ServiceInvocationTask.java",
"nativeMethod": false,
"methodName": "runImpl",
"className": "com.backendless.coderunner.runtime.task.ServiceInvocationTask",
"lineNumber": 93
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "ExtendedRunnable.java",
"nativeMethod": false,
"methodName": "run",
"className": "com.backendless.coderunner.runtime.concurrent.ExtendedRunnable",
"lineNumber": 22
},
{
"___jsonclass": "java.lang.StackTraceElement",
"fileName": "Thread.java",
"nativeMethod": false,
"methodName": "run",
"className": "java.lang.Thread",
"lineNumber": 745
}
],
"suppressed": [],
"message": null
}
}
this happens when attempting to save a user after updating their “contacts” property, which is a 1:N relationship with the “HeyStaxContact” table. Here’s what I’m doing on the line which sets off the exception:
me.setProperty( "contacts", myContactList );
try
{
BackendlessUser savedMe = Backendless.Persistence.save( me );
response.put( "savedMe", savedMe );
}
catch( Exception ex )
{
response.put( "cause", ex.getCause() );
response.put( "trace", ex.getStackTrace() );
}
In this case, “me” is a BackendlessUser object that I’ve obtained through the following query:
List<String> related = new ArrayList<>();
related.add( "contacts.user" );
String whereClause = "objectId='" + objectId + "'";
QueryOptions queryOptions = new QueryOptions();
queryOptions.setRelated( related );
queryOptions.setRelationsDepth( 2 );
BackendlessDataQuery query = new BackendlessDataQuery( whereClause );
query.setQueryOptions( queryOptions );
BackendlessUser me = Backendless.Persistence.of( BackendlessUser.class ).find( query ).getData().get( 0 );
Happy to provide anything else you’d need to try and solve this. I’m hoping it’s something that I’m simply overlooking because I’ve been staring at the code too long…
Any help is greatly appreciated.Thanks,-Ian