Как получить связанные объекты Odata Odata4j
У меня проблемы с получением связанных объектов с помощью библиотеки odata4j. Моя проблема заключается в следующем:
A имеет отношение один ко многим с B. A имеет список "bs" элементов типа B. Я создал объект A и ссылку, используя
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", a.getId());
OEntity entityB = consumer.createEntity("B").properties(OProperties.string("name", "some name")).link("a", OEntityKey.create(map)).execute();
Затем я извлек сущность B, используя следующее, где convert назначает свойства извлеченного объекта объекту типа A:
A b = convert(consumer.getEntity("A", id).expand("bs").execute());
В преобразовании я попытался получить связанные объекты, используя:
OEntity bsOEntity = a.getLink("bs", OLink.class).getRelatedEntity();
Вышеуказанное привело к получению ссылки, но "getRelatedEntity" возвращает ноль
Я неправильно использую ссылки и связанные объекты? Если да, то как мне получить связанные объекты в Odata4j? В Интернете не так много примеров.
Ваша помощь будет высоко ценится.
Спасибо
Изменить: я также попытался получить связанный объект, используя:
ORelatedEntitiesLink link = (ORelatedEntitiesLink) a.getLinks().get(0);
OEntity retrievedEntity = consumer.getEntities(link).top(1).execute().first();
И я попытался создать ссылку с помощью, которая, кажется, работает так же, но с дополнительным вызовом, чтобы получить сущность B:
OEntity bEntity = consumer.getEntity("A", FOREIGN_KEY_VALUE).execute();
OEntity medEntity = consumer.createEntity("B").properties(OProperties.string("name", "some name")).link("a", bEntity).execute();
1 ответ
Ты пытался getRelatedEntities()
вместо getRelatedEntity()
, Из вашего объяснения я понимаю, что A имеет коллекцию B, поэтому попробуйте
List<OEntity> bsOEntities = a.getLink("bs", OLink.class).getRelatedEntities();
Меня устраивает.