これを行う方法にはいくつかのオプションがあります。この方法はしかし、ページングをサポートしていません
Iterable<Long> ids = categories.stream().map(SomeObject::getId).collect(Collectors.toSet());
Iterable<SomeObject> someObjects = someObjectRepository.findAll(ids, 1);
注:
あなたの呼び出し元のコードは、単にあなたのSomeObjectRepository
で次のように呼び出すことができます。
もう一つの方法は、あなたの呼び出し元のコードにSession
を注入し、どちらかの希望のオブジェクトを取得するか、すべてのインスタンスメソッドでロードを使用するカスタムサイファークエリを記述することです:
@Autowired
private Session session;
...
// Option 1: write some cypher
Map<String, Object> params = new HashMap<>():
params.put("ids", ids) // use a stream like above to collect the ids.
Iterable<SomeObject> someObjects = session.query(SomeObject.class, "MATCH (n:SomeObject) ...", params);
//Option 2: use the load by instances method which also allows pagination:
Collection<SomeObject> someObjects = session.loadAll(categories, new Pagination(0, 25));
私の推薦は、オプション2となりますそれはあなたが望むものとほとんど同じです。
SomeObjectとカテゴリは、「BELONG」関係でリンクされている別のエンティティです。 – icer
ああそうです。その場合、セッションを挿入してオプション1を実行するだけです。OGMの 'Pagination'オブジェクトを使ってページを返すこともできます。 – digx1