Hi,
Which version of OrientDB are you using?
Also, have you experimented with your desired result set using the console
to verify your query?
-Colin
Orient Technologies
The Company behind OrientDB
On Thursday, March 26, 2015 at 4:58:38 AM UTC-5, MrFT wrote:
>
> I am trying to understand the JAVA API when they have sub-queries
>
> String query = "select name, $sungbyrecord as x_sungby from V " +
> "let $sungby = outE()[ @class = 'sung_by' ], " +
> "$sungbyrecord = list( (select in.name from $sungby ) ) " +
> "where name='HEY BO DIDDLEY'";
> ODatabaseDocumentTx databaseDocumentTx = new ODatabaseDocumentTx(
> "remote:localhost/GratefulDeadConcerts" );
> databaseDocumentTx.open( "admin", "admin" );
> List<ODocument> result = databaseDocumentTx
> .query( new OSQLSynchQuery<ODocument>( query ) );
>
> for ( ODocument d : result ) {
> System.out.println( d.toString() ); *//prints #-2:0{name:HEY BO
> DIDDLEY,x_sungby:[1]} v0*
> System.out.println( d.toJSON() ); */*prints (doesn't matter if I add
> "**fetchplan
> x_sungby:1" to the query or not*
> Mar 26, 2015 10:30:39 AM com.orientechnologies.common.log.OLogManager log
> SEVERE: Fetching error on record #-2:0
> java.lang.ArrayIndexOutOfBoundsException: -2
> at
> com.orientechnologies.orient.client.remote.OStorageRemote.getPhysicalClusterNameById(OStorageRemote.java:1319)
> at
> com.orientechnologies.orient.client.remote.OStorageRemoteThread.getPhysicalClusterNameById(OStorageRemoteThread.java:526)
> at
> com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeReadRecord(ODatabaseDocumentTx.java:1605)
> at
> com.orientechnologies.orient.core.tx.OTransactionNoTx.loadRecord(OTransactionNoTx.java:80)
> at
> com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.load(ODatabaseDocumentTx.java:1424)
> at
> com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.load(ODatabaseDocumentTx.java:117)
> at
> com.orientechnologies.orient.core.id.ORecordId.getRecord(ORecordId.java:313)
> at
> com.orientechnologies.orient.core.fetch.OFetchHelper.fetchCollection(OFetchHelper.java:491)
> at
> com.orientechnologies.orient.core.fetch.OFetchHelper.fetch(OFetchHelper.java:372)
> at
> com.orientechnologies.orient.core.fetch.OFetchHelper.processRecord(OFetchHelper.java:311)
> at
> com.orientechnologies.orient.core.fetch.OFetchHelper.fetch(OFetchHelper.java:72)
> at
> com.orientechnologies.orient.core.serialization.serializer.record.string.ORecordSerializerJSON.toString(ORecordSerializerJSON.java:337)
> at
> com.orientechnologies.orient.core.serialization.serializer.record.string.ORecordSerializerStringAbstract.toString(ORecordSerializerStringAbstract.java:665)
> at
> com.orientechnologies.orient.core.record.ORecordAbstract.toJSON(ORecordAbstract.java:192)
> at
> com.orientechnologies.orient.core.record.ORecordAbstract.toJSON(ORecordAbstract.java:188)
> at ft.orientdb.test.Test01.testQuery(Test01.java:681)
> at ft.orientdb.test.Test01.main(Test01.java:100)
>
> *{"@type":"d","@rid":"#-2:0","@version":0,"name":"HEY BO
> DIDDLEY","x_sungby":[]}*
> **/*
> }
>
> When trying the Async query
>
> databaseDocumentTx.query( new OSQLAsynchQuery<ODocument>( query, new
> OCommandResultListener() {
> List<ODocument> result = new ArrayList<ODocument>();
> @Override
> public boolean result(Object arg0) {
> System.out.println( "Async result: " + ((ODocument)arg0).toString() );
> result.add( (ODocument)arg0 );
> return false;
> }
> @Override
> public void end() {
> System.out.println( "Async result finished... " + result.size() + "
> record" );
> }
> } ) );
>
> it only returns Async result: #-2:0{name:HEY BO DIDDLEY,x_sungby:[1]} v0
> regardless if I add *fetchplan x_sungby:1* to the query or not.
> toJSON shows the same exception as in the SYNCH version.
>
> *So how should I do it to also fetch the records pointed to in the
> subquery be done using the java API? How can I make toJSON work?*
>
>
>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.