Что возвращает OrientDB OCommandRequest.execute()?

#orientdb

#orientdb

Вопрос:

Я работаю над некоторым Java-кодом для взаимодействия с графами OrientDB. В настоящее время я смотрю на интерфейс для OCommandRequest. Метод execute() может возвращать что-то другое на основе выполняемого запроса… но я не уверен, что из этого возможно.

Я просмотрел код, но я немного новичок в Java. Пока я вижу, что OCommandRequest — это интерфейс, но это примерно то, насколько я продвинулся в коде.

Я не нашел много в документации OrientDB, которая помогла бы мне узнать, какие типы возвращаемых значений возможны и что означают значения, когда они возвращаются.

Я поиграл с некоторыми примерами на своей стороне, основываясь на некоторых примерах, которые я нашел в massapi. Иногда он возвращает целое число, иногда логическое значение, а в других случаях я получаю итерацию.

Мой вопрос: существует ли какая-либо документация, которая характеризует, что возвращает OCommandRequest.execute() и почему? В идеале некоторые отформатированные документы хороши, но указатели на код, чтобы найти, где реализуется интерфейс, также были бы полезны и позволили бы мне немного расширить поток.

На данный момент я эмулирую один из примеров с сайта massapi, на который я ссылался ранее (но я не уверен, действительно ли это считается лучшим способом обработки ответов от запросов):

 OCommandRequest command = graph.command(new OCommandSQL(query));
Object result = command.execute();
if( result instanceof Integer ) {
    // do stuff if an integer was returned
} else if( result instanceof Boolean ) {
    // do stuff if a boolean was returned
} else if( result instanceof Iterable<OrientVertex> ) {
    // do stuff if an iterable list of vertices was returned
} else {
    // any other types?
}
  

Любые указатели, которые кто-то может дать, определенно полезны.

Спасибо!

Комментарии:

1. может ли это быть полезным? orientdb.com/javadoc/latest

2. @IvanMainetti Я уже знаю о Javadoc… Я изучал это. Я даже ссылался на Javadocs ocommandrequest в своем вопросе… Я до сих пор не нашел код, который реализует интерфейс. Я пытаюсь выяснить, какие типы могут быть возвращены методом execute() . Пока я знаю, что он может возвращать bool , int или Iterable<> , в зависимости от выполняемого запроса. Я хотел бы выяснить, что заставляет возвращать одно поверх другого. Например, я ожидаю, что запрос SELECT FROM V вернет an Iterable<OrientVertex> , но может ли это вернуть что-то другое, например целое число? Если да, то когда?

Ответ №1:

Документации по этому поводу нет, это зависит от выполняемой вами SQL-команды.

Чтобы узнать возвращаемый тип, вы должны обратиться непосредственно к их собственному классу. Например. DROP CLASS возвращает логическое значение и так далее.


В любом случае вы можете использовать этот код, чтобы увидеть возвращаемый тип:

 OCommandRequest command = g.command(new OCommandSQL(q));    
Object result = command.execute();
System.out.println(q "n" result.getClass().toString() "n");
  

Комментарии:

1. Правильно… У меня есть что-то подобное прямо сейчас. Мне просто интересно, есть ли какая-либо документация с таблицей в ней или что-то, что показывает, что возвращает что … т.Е. DROP CLASS ... Возвращает логическое значение, DELETE EDGE ... возвращает целое число, а его значение — количество удаленных ребер… SELECT FROM E возвращает повторяющийся<OrientEdge>, но SELECT FROM V возвращает повторяющийся<OrientVertex> … Кроме того, что делать, когда что-то идет не так? Получаю ли я null? Исключение? Это был бы удобный ресурс … поскольку, похоже, на данный момент это просто хранится как племенное знание.