問題タブ [neo4j-ogm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neo4j - ID による loadAll による再帰関係のロード中にエラーが発生しました
新しい Neo4j 2.3 OGM を使用します。ID でエンティティを読み込もうとすると、次の問題が発生します。
(1, "Alex")が(2, "Joseph")および(3, "Guy")と友達であると仮定します。(4, "Nati")は(5, "Amit")と友達で、次のコードを使用します:
session.loadAll(Person.class, Arrays.toList(new Long() { 1L, 4L }), 1)
Alex には 2 人の友人( Guy、Joseph) が含まれ、Nati には 1 人の友人が含まれますが、実際には 5 つのオブジェクト (Alex、Guy、Joseph、Nati、Amit) が返されます。Mike と Nati には友人が含まれていますが、私が 2 つの ID でPersonを要求し、5 を含む Iterable を取得したのは奇妙に思えます (そして確かに望ましくないことです) 。これはバグですか?
neo4j - Neo4j OGM 1.1.3 ogm 深さ 2 でオブジェクトをロードするのが非常に遅い
を使用して深さ 2 のクエリを実行しているときにタイムアウトが発生しsession.load()
ました。Neo4j OGM 1.1.3 で作業しています (Spring Data Neo4j 3.4 から移行しようとしています)。Node オブジェクトを読み込もうとしています
私のノードに接続されているカテゴリは非常に人気があり (20,000 個のノードが同じカテゴリを持っています)、実行session.load(Node.class, 1L, 2)
要求を使用するとタイムアウトになります。カテゴリのすべての関係を照会しようとしている可能性があります (Java のモデル カテゴリはこの関係を無視しますが)。
ロードすることを期待するのは単純です:
これは非常に重いリクエストではなく、タイムアウトするべきではありません (不要な関係をロードしている場合を除きます。
特定の関係を深くロードするだけに伝える方法はありますか?
たとえば、ツリーの 10 レベルをロードしたいのですが、ツリーの他の情報 (カテゴリ、ロールなど、実際にはツリー ノードではなく、より多くの情報を表すだけです) は、それらの関係なしでロードしたいだけです。したがって、すべての Node オブジェクトをロードし、途中で他のオブジェクトのみを関係なしでロードしたいと思います。
アップデート
これらの問題に対処していると思われる 2 つの未解決の問題が見つかりました。
neo4j - SDN4 の @Index アノテーション
Neo4j インデックスを管理しないのに、SDN4 に @Index アノテーションがあるのはなぜですか? SDN3 では、データベースにインデックスを設定するために使用されていましたが、ドキュメントを考慮すると、そうではありません。
neo4j - neo4j-ogm または spring-data-neo4j から Neo4j のノードにラベルを動的に追加する方法は?
ノードを作成するときに、実行時に認識される複数のラベルをノードに追加したいと考えています。これは、neo4j-ogm または spring-data-neo4j で可能ですか?
java - RelationshipEntity の保存が機能しない
私は Neo4J を初めて使用し、Spring データ リポジトリを使用しています。以下はドメイン定義です
GraphRepository
エンティティ クラスごとに定義している 次のコードは RelationshipEntity を保存しません
クラスでroles
変数に注釈を付ける必要がありますか? 保存する前にコレクションに
データを入力する必要がありますか? そうすると、プロパティは保存されません。Actor
roles
Actor
Role
java - SpringDataNeo4j-4: 「所有者」クラス表現戦略内のコレクションにエンティティ (所有アイテム) を格納する
残念ながら、十分な情報がなく、"OWNER - OWNED ITEMS" のような Java 関連エンティティで表現する最良の方法を示す例もありません。
私は neo4j 関係の方向性について話しているのではなく、そのようなエンティティを保存する際の Java データ表現と永続化動作についてのみ話しています。 ここでは、永続化の深さについてガイドが説明しています。
「...この動作は、アノテーションで構成されたリレーションシップの方向に依存しないことにも注意してください。これは Java 参照の問題であり、データベース内のデータ モデルとは関係ありません。」
データ モデルで選択する戦略を理解したい。そう...
たとえば、(同じタイプの)多くのサブタスクを持つことができるクラス「タスク」があります。どのタスクも「プロジェクト」が所有でき、「コンポーネント」のメンバーになることができます...それにもかかわらず、タスクはプロジェクトが直接所有でき、コンポーネントとはまったくリンクできません。
オプション1:
これは、最も論理的なデータ表現のようです。しかし、欠点があるようです:
新しいタスクが作成されて template.save(newTask) が呼び出されると、新しいタスク オブジェクトのみが保持され、このタスクとプロジェクトの間の関係を作成します。 - プロジェクト オブジェクトを抽出し、新しく保存されたタスクをコレクション要素として更新する必要があります。したがって、実際には、別の Task オブジェクトを保存する必要さえありません。Project オブジェクトを抽出し、コレクションに Task を追加し、Project を更新することができます...私には奇妙に見えます...
Task オブジェクトを作成するとき、Project はまったく存在しないと想定できます。その場合、Task は Project について何も知らないため、再帰的に作成されません...
オプション 2:
このモデルでは、db から既存のプロジェクトを抽出した新しいタスクまたは新しいコンポーネントの設定 (または新しいプロジェクトの設定) を作成し、それらの両方を保存できます...そして、親オブジェクトが子と同様に永続化されることを確認します。
欠点:
リレーションデータベースの「FOREIGN_KEY」リンクのように見えます...
たとえば、タスクが一部のプロジェクトまたはコンポーネントにリンクされていない場合、冗長な「null」プロパティがあります...
したがって、何を選択すればよいかわかりません-両方のソリューションが機能します...しかし、それは機能することではなく、「クリーンコード」についてです
java - SpringDataNeo4j-4: ネストされたエンティティで BeforeSaveEvent が呼び出されない
の呼び出し中にネストされたエンティティで問題が発生しましたNeo4jTemplate.save(...)
。
実際には、ネストされたエンティティも永続化されますが、BeforeSaveEvent
親エンティティでのみ呼び出されます。
では、すべてのエンティティのとフィールドBeforeSaveEvent
にデータを入力します。uuid
timeCreated
クラスコンストラクターで自分でこの値を作成したくありません。
そのため、次の解決策を検討しています。
どういうわけか私が期待したように動作するようにします (難しいものです)。
ネストされたエンティティを永続化したり、すべてのエンティティを別の方法で永続化したりしないでください...
create
uuid
およびtimeCreated
in クラス コンストラクター外部ライブラリを使用する (ほとんどありません)
何かアドバイス?