2

odata4jライブラリを使用して関連エンティティを取得できません。私の問題は次のとおりです。

A は B と 1 対多の関係にあります。A にはタイプ B のアイテムのリスト「bs」があります。エンティティ 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」は null を返します

リンクと関連エンティティの使用は間違っていますか? その場合、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();
4

1 に答える 1

0

getRelatedEntities()の代わりに試しましたかgetRelatedEntity()。あなたの説明から、AにはBのコレクションがあることがわかりましたので、試してみてください

List<OEntity> bsOEntities = a.getLink("bs", OLink.class).getRelatedEntities();

わたしにはできる。

于 2013-12-25T01:28:40.123 に答える