#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
вернет anIterable<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? Исключение? Это был бы удобный ресурс … поскольку, похоже, на данный момент это просто хранится как племенное знание.