You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After upgrading from 3.1.9 to 3.2.28 I get java.lang.ClassCastException: com.orientechnologies.orient.core.sql.executor.OResultInternal cannot be cast to com.orientechnologies.orient.core.db.record.OIdentifiable
#10217
Open
adepase opened this issue
Apr 15, 2024
· 4 comments
First attempt to use 3.2.X (coming from previous OrientDB version 3.1.9, where everything worked correctly).
I hoped my queries from Java worked correctly, but I got blocking errors.
Where map contains parameters names and values and where ograh.execQuery is:
public ArrayList<OrientVertex> execQuery(String queryString,Map<String,Object> params){
ArrayList<OrientVertex> result = new ArrayList<OrientVertex>();
OrientGraph graph = orientFactory.getTx();
graph.makeActive();
try{
OSQLSynchQuery<OrientVertex> query = new OSQLSynchQuery<OrientVertex>(queryString);
OCommandRequest command= graph.command(query);
Iterable<OrientVertex>resultIterable = command.execute(params);
if (resultIterable!=null) {
for(OrientVertex v: resultIterable){
v.detach();
result.add(v);
}
}
} catch (OCommandExecutionException e) {
// exception code
} catch (Exception e){
// exception code
} finally {
graph.shutdown(); //not a shutdown, but return to the pool
}
return result;
}
findDict code is:
var query = "select from morph where";
var op = " ";
var parms = {};
// omitted code to dinamically compose the where and limit part of the query
print("query = "+query+" parms="+JSON.stringify(parms));
var pass = db.query(query,parms);
return pass;
Possible counfounding cause: I'm using this versions for Java libs:
I don't know if is there a more recent replacement for com.orientechnologies:spring-boot-orientdb-autoconfigure:0.14-3.1.0-SNAPSHOT: Is this yet good? what should I use instead? (I cannot find the repository with new versions, I tried 3.2.0 and 3.2.29 (both with and without -SNAPSHOT)
Actual behavior
Cannot execute correctly, but I get an exception (from Java: the same sql select, with the same parameters from OrientDB studio Browse tab executes correctly):
com.orientechnologies.orient.core.exception.OCommandExecutionException: Error on execution of command: sql.select expand(findDict(:pid, :plemma, :pstem, :pclitic, :ptype, :psimpleType, :pexcludeType, :pconfirmed, :plang, :pplainPart, :size, :page, :orderBy))
2024-04-15 13:58:26 DB name="mrj"
2024-04-15 13:58:26 at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:4218)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:4171)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.sql.query.OSQLQuery.run(OSQLQuery.java:72)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.sql.query.OSQLAsynchQuery.run(OSQLAsynchQuery.java:76)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.sql.query.OSQLSynchQuery.run(OSQLSynchQuery.java:84)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.query.OQueryAbstract.execute(OQueryAbstract.java:34)
2024-04-15 13:58:26 at com.orientechnologies.orient.server.OConnectionBinaryExecutor.executeCommand(OConnectionBinaryExecutor.java:618)
2024-04-15 13:58:26 at com.orientechnologies.orient.client.remote.message.OCommandRequest.execute(OCommandRequest.java:102)
2024-04-15 13:58:26 at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.sessionRequest(ONetworkProtocolBinary.java:354)
2024-04-15 13:58:26 at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.execute(ONetworkProtocolBinary.java:238)
2024-04-15 13:58:26 at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:68)
2024-04-15 13:58:26 Caused by: java.lang.ClassCastException: com.orientechnologies.orient.core.sql.executor.OResultInternal cannot be cast to com.orientechnologies.orient.core.db.record.OIdentifiable
2024-04-15 13:58:26 at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.applyExpand(OCommandExecutorSQLSelect.java:2685)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.execute(OCommandExecutorSQLSelect.java:527)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:74)
2024-04-15 13:58:26 at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.executeCommand(OAbstractPaginatedStorage.java:4205)
2024-04-15 13:58:26 ... 10 more
2024-04-15 13:58:26
2024-04-15 13:58:26 2024-04-15 11:58:26:088 SEVER Exception `64225EFF` in storage `plocal:/orientdb/databases/mrj`: 3.2.28 (build ${buildNumber}, branch UNKNOWN) [OLocalPaginatedStorage]
Steps to reproduce
See previous Java code and images
The text was updated successfully, but these errors were encountered:
I think this happen because the query API in the script engine, for: var pass = db.query(query,parms); has been switched do the new query engine that use OResult instead of documents as result.
I see in your java example you are using OSQLSynchQuery that have been deprecated, and use the old query engine, you should be able to use the now query engine, how to do it, it may depends on the API you are using right now, that look like gremlin, is that the case ?
If you switch all your code to the new query engine this issue should go away.
Thank you, but I don't understand: what should I use instead of OSQLSynchQuery? Where can I find the documentation about the new query engine (both in script and in Java). About the API I'm using, I don't understand what you mean exactly: I wrote the gradle imports and all the code involved in the issue description, what other information are you asking for?
Which already use OSQLSynchQuery what I'm saying is trying to migrate do another API to execute the query, that on the graph is called executeSql or querySql.
So you should NOT use OSQLSyncQuery but the other API that use a String as paramenter
OrientDB Version: 3.2.28
Java Version:
OS: Docker OrientDB 3.2.28 Official image (https://hub.docker.com/_/orientdb/)
Expected behavior
First attempt to use 3.2.X (coming from previous OrientDB version 3.1.9, where everything worked correctly).
I hoped my queries from Java worked correctly, but I got blocking errors.
Base query: select expand(findDict(null, 'prova', null, null, null, null, null, null, 'it', null, 1000, 1, null))
Java code calling OrientDB:
Where map contains parameters names and values and where ograh.execQuery is:
findDict code is:
Possible counfounding cause: I'm using this versions for Java libs:
I tested also:
with the same results (exceptions).
I don't know if is there a more recent replacement for com.orientechnologies:spring-boot-orientdb-autoconfigure:0.14-3.1.0-SNAPSHOT: Is this yet good? what should I use instead? (I cannot find the repository with new versions, I tried 3.2.0 and 3.2.29 (both with and without -SNAPSHOT)
Actual behavior
Cannot execute correctly, but I get an exception (from Java: the same sql select, with the same parameters from OrientDB studio Browse tab executes correctly):
Steps to reproduce
See previous Java code and images
The text was updated successfully, but these errors were encountered: