2

rhino scriptから orientDB にアクセスしようとしています。エラーが発生します

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

次のコードを実行すると:

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()

すでに作成され、入力されているデータベースにアクセスしています。選択はコンソールから機能します。

javadoc と ODatabaseRecordWrapperAbstract.query メソッドが OSQLSynchQuery が実装する OQuery を受け取ることを確認しました。

4

1 に答える 1

2

クエリ メソッドは varargs を使用しています。Rhinoはおそらくそれを処理できません。余分な空の Object 配列を渡してみてください:

 var result = db.query(
     new OSQLSynchQuery( "select * from TestObj" ), [] )
于 2012-09-05T03:27:28.377 に答える