Frage

I'm trying to access an orientDB from a rhino script. I'm getting the error

js: Can't find method com.orientechnologies.orient.core.db.ODatabaseRecordWrapperAbstract.query(com.orientechnologies.orient.core.sql.query.OSQLSynchQuery)

when I execute the following code:

var System = java.lang.System
var OSQLSynchQuery = Packages.com.orientechnologies.orient.core.sql.query.OSQLSynchQuery
var ODatabaseDocumentTx = Packages.com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx
var ODocument = Packages.com.orientechnologies.orient.core.record.impl.ODocument
var File = java.io.File

var user_home = System.getProperty( "user.home" )
var db_path = user_home + "/.testdb"
var db_url = "local:" + db_path + File.separator + "db"
if( ! new File( db_path ).exists() ) {
    new File( db_path ).mkdirs()
    new ODatabaseDocumentTx( db_url ).create()
}
var db = new ODatabaseDocumentTx( db_url ).open( "admin", "admin" )
db.getStorage().getConfiguration().txSegment.setSynchRecord( true )

print( 'Select From TestObj' )

if( db.getMetadata().getSchema().getClass( 'TestObj' ) != null  ) {
    var result = db.query( new OSQLSynchQuery( "select * from TestObj" ) )
    print( "# of Entries: " + result.size() )
}
db.close()

I'm accessing an already created and populated database. The select works from the console.

I've checked the javadoc and ODatabaseRecordWrapperAbstract.query method takes an OQuery which OSQLSynchQuery implements.

War es hilfreich?

Lösung

The query method is using varargs. Rhino probably cannot handle that. Try to pass in an extra empty Object array:

 var result = db.query(
     new OSQLSynchQuery( "select * from TestObj" ), [] )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top