Я возился с orientdb sql, и мне было интересно, есть ли способ обновить ребро вершины вместе с некоторыми данными о нем.
предполагая, что у меня есть следующие данные: вершина: человек, край комнаты: внутри (от человека к комнате)
что-то типа:
UPDATE Persons SET phone=000000, out_Inside=(
select @rid from Rooms where room_id=5) where person_id=8
очевидно, вышеперечисленное не работает. Выдает исключение:
Error: java.lang.ClassCastException: com.orientechnologies.orient.core.id.ORecordId cannot be cast to com.orientechnologies.orient.core.db.record.ridbag.ORidBag
Я попытался просмотреть исходники на github в поисках синтаксиса для сумки с 1 элементом, но ничего не нашел (нашел %, но это, похоже, для сериализации, а не для SQL).
(1) Есть ли способ сделать это тогда? как обновить соединение? Есть ли способ, или я вынужден создать новый край, а старый удалить?
(2) Когда я писал это, мне пришло в голову, что, возможно, ребра в этом случае не подходят. Возможно, мне следует использовать вместо этого ССЫЛКУ. Я должен сказать, что не уверен, когда использовать какой, или каковы последствия использования любого из них. Я нашел это, хотя:
https://groups.google.com/forum/#!topic/orient-database/xXlNNXHI1UE
комментарий 3 сверху, Lvc@, где он говорит:
"The suggested way is to always create an edge for relationships"
Кроме того, даже если я должен использовать ссылку, пожалуйста, ответьте на (1). В любом случае, я был бы рад узнать ответ.
p.s. В моем сценарии человек может находиться только в одной комнате. Это скорее всего не изменится в будущем. Очевидно, что край имеет то преимущество, что в случае, если я захочу изменить его (каким бы маловероятным это ни было), это будет очень легко.
Решение (частичное)
(1) Решение состояло в том, чтобы просто удалить выбор поля. Спасибо за Lvca за указание на это!
(2) --Все еще не уверен--