問題タブ [spring-data-neo4j]
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.
spring - 同じタイプの複数の Relationship クラス
spring-data-neo4j を使用して、クラスを aとの両方@RelationshipEntity(type="OWNS")
にリンクするためにを使用して 2 つのクラスを作成したいと考えています。Person
Pet
Car
実際Node
にクエリを実行して、タイプなどRelationship
を確認できるため、これは問題なくグラフ データベースに適切に保存されます。
しかし、使用しようとする@RelatedTo(type="OWNS", elementClass=Pet.class)
とクラスキャスト例外が発生するか、遅延初期化を使用すると誤った結果が得られます。
toString()
my person (myは省略されていますが、単にtoString()
for each フィールドを呼び出すだけです)を印刷しようとしたときに得られる結果は次のとおりです。
これが可能かどうか、行う必要があるかどうか、単なるバグまたは欠落している機能かどうかを誰かが知っていますか?
neo4j - Neo4j の TypeRepresentationStrategy を構成する
現在、neo4j を使用した Java プロジェクトに取り組んでいます。
Spring Data Neo4jを使用し、グッド リレーションシップブックからほとんどの情報を取得します。
このドキュメントでは、グラフの標準エンティティ タイプ表現はIndexingNodeTypeRepresentationStrategyであると述べています。
私たちのプロジェクトでは、サブリファレンス ノードを持つプロジェクトを優先します。
リポジトリを操作するときにこの戦略を使用するように neo4j を構成するにはどうすればよいですか。HelloWorld の例から始めたので、現在、次のようなリポジトリ インターフェイスがあります。
さらに、ノード エンティティがあります (関係のないコードのほとんどは省略します)。
TypeRepresentationStrategyを設定する方法の小さな例を誰でも提供できますか?
これはSpring構成で実行できますか?
構成は次のようになります。
編集:
別のセッションの後、私はついにそれを機能させることができました!Michael Hungers の回答に基づいて開始しましたが、Bean を作成できませんでした。彼の例がどこからのものかを見つけました: gitHub。ただし、これはまだうまくいきませんでした。TypeRepresentationStrategyFactory クラスのソース コードを詳しく調べ始めました。Strategy は非公開の列挙型であることがわかりました。これは、私が提供しようとした 2 番目のコンストラクター引数です。私のプロジェクトでは、タイプ Strategy としてそれを検出することはありませんでした。
ストラテジーは非公開なので、最初は少し懐疑的でした。つまり、タイプ Strategy が見つからないため、コードで TypeRepresentationStrategyFactory をインスタンス化することさえできませんでした。私はすぐに、Spring がそのようなことを実行できると思われることを知りました: Beans with private constructor。
最終的に、コンストラクターの引数をまったく識別していなかったため、Michael のソリューションを調整する必要がありました。私が何をしたとしても。多分それは私の設定です、私は本当に知りません。しかし、最終的に、プライベート列挙から Beanを作成し、これをコンストラクターへの参照として提供するソリューションを思いつきました。
neo4j - Spring Data Neo4j - @RelationshipType の問題
@RelationshipType
リレーションシップ タイプにフィールドの注釈が付けられている場合、リレーションシップを取得できません。
Neoclipse では関係が正しいように見えますが、アプリケーションで結果を取得していません。
動作しないコードは次のとおりです (簡略化):
と:
動作するコードは次のとおりです。
ただし、これは私のユースケースには適していません (インスタンスRelationship
の任意の組み合わせの間にさまざまなタイプがたくさんありEntity
ます。
完全なテスト コードは以下のとおりです。Agency
とItem
は両方とも のサブクラスですEntity
。
最後の行は、テストが失敗している場所です。手がかりはありますか?
M
PS。私はNeo4jの素人で、たまたま見つけ@RelationshipType
たので、笑えるほど間違ったことをしているかもしれません。そうだといい!
spring - Springデータneo4jとINキーワードを使用したクエリ
リレーションシップに接続されたさまざまなノードがあります。これらの関係では、列挙型のいくつかのプロパティを使用し、Cyper言語を使用して関係をクエリし、配列内にEnumプロパティを持つもののみを返します。また、クエリしようとしているリレーションシップは、クエリしたいプロパティを持つ別のサブクラスのサブクラスです。次に例を示します。
可視性がプライベート、ネットワーク、またはパブリックのいずれかになり得る列挙型であると想像してください。次に、リポジトリで次のクエリを試しましたが、常にすべてを返すか、エラーをスローします。
私が本当に使いたいのは「IN」演算子ですが、それはINが何であるかを知らないかのようにエラーをスローします。
可視性がインデックスに登録されていませんか?または私はこれをすることになっていないのですか?代わりに、Visibilityプロパティを文字列で変更しようとはしていません。これは、クエリを実行できる他のStringプロパティがあるため、機能するはずです。'IN'演算子の使用はボーナスです!
編集1:私はspring-data-neo4j2.0.1.RELEASEを使用しています。を使用して単体テストでこれを実行しようとしていますが、デフォルト構成を使用してサーバーを実行しているときorg.neo4j.test.ImpermanentGraphDatabase
にクエリが機能することに気付きました@Query("start s=node({0}) match s-[r:TYPE]->e where r.visibility='Private' return r")
が、それでも単体テストでは機能しません。また、サーバーを実行している場合でも、「IN」句はエラーをスローします。これは私が使用しているバージョンに関連していますか?より新しいバージョンを使用しようとしたことを覚えていますが、依存関係が失敗したため、再試行する必要があります。
編集2:そこで、spring-data-neo4jのバージョンを2.1.0.BUILD-SNAPSHOTに更新し、neo4jバージョンも1.7にアップグレードしました。これで、「IN」キーワードのエラーは発生しませんが、検索対象の値を渡すためにどの構文を使用すればよいかわかりません。だから持っている
のような単純な文字列を渡す場合は機能しますが、一致を返しても何も返さないものPublic
を渡す場合は機能しません。のパラメータも変更してみましたが、まったく機能しません。Public, Private
Public
String visibility
String[] visibility
spring - spring-data-neo4jでインデックス付けされていないlong型のフィールド
タイトル通り。注釈付きのPOJOを作成しました。その中に、インデックスを付けて検索したい@NodeEntity
識別子として使用したいフィールドがあります。long
POJOを使用しneo4jTemplate
て保存すると、問題なく保存され、neo4jがクラスのインデックス名を作成しているのがわかりますが、インデックスに対してクエリを実行しようとすると、何も表示されません。
int
との両方でフィールドを試しましたlong
が、どちらも機能しないようです。1
クエリを実行するときに、、、の両方を試しましたが、ノードを返すものは1l
ありません。"1"
int
値がまたはであるキー/値を使用してインデックスを作成できlong
、それらが正常に機能することを確認できます。
他の誰かがこれに遭遇しましたか?
date - 日付を Spring Data neo4j と比較する
プロパティの関係を照会する場合java.util.Date
、どの構文を使用すればよいですか? 次のようなクエリを使用してみました (これは、私がやろうとしていることを示すための単なる例です。変数名に注意を払わないでください):
しかし、次のエラーがスローされます。
私も日付を渡してみましたが、同じエラーがスローされますが、Long と Date を比較しようとしています。
spring-data-neo4j バージョン 2.0.1.RELEASE を使用しています
spring - org.neo4j.graphdb.NotInTransactionException
これに頭を悩ませて1週間が経ちましたが、まだ解決策が見つからないようです。spring-data-neo4j maven アーティファクトと、この問題を引き起こす次のコード行を使用しています。
メソッドを実行すると、次のエラーが発生します
accessorSet.add(classDescriptor);
スタックトレース:
私のエンティティは次のとおりです:( User.java )
( Project.java )
助けてください !依存関係ツリーが添付されています。
spring - Spring Data NEO4J:リレーションの値がnull
Spring 3.1(Milestone)とSpring Data Neo4J2.1RCプロジェクトを実行しています。すべてが正常に起動し、neo4jデータベースが必要に応じて入力され、neoclipseにも表示されます。
ここで、IDによってエンティティ(Container.javaと呼びます)をフェッチし、関係を「イベント」にします。
Container.javaの関係は、次のようにモデル化されています。
container.getEvents()にアクセスしてそれらを反復処理すると、単一のイベントにIDがあることがわかりますが、他のすべてのプロパティはnullです:( neoclipseで確認すると、すべてのプロパティが適切に保存されます。
ある種の「熱心な」または「遅延」読み込みはありますか?@RelationshipTypeは使用しません。
neo4j - neo4j にトランザクション イベント ハンドラを登録する
私は現在、Neo4j で Spring Data を使用しておりSpringRestGraphDatabase
、特定のトランザクション イベント ハンドラーを登録できるようにサブクラス化しました。
registerTransactionEventHandler
そのためにメソッドを呼び出します。残念ながら、私は常に次の例外を受け取ります。
AbstractRemote をよく見ると、常に例外がスローされることがわかります。
register メソッドのRestGraphDatabase
実装が提供されていないため、例外が発生します。特に拡張しているため、どの代替手段を使用すればよいかわかりませんSpringRestGraphDatabase
。
よりクリーンな代替手段はありますか?
(私は v2.1.0.M1 を使用しています)
spring-security - Neo4j スプリング セキュリティ
Neo4j のようなグラフ データベースは、「ユーザー」と、スプリング セキュリティがアクセス権をチェックする情報を格納するのに適していますか?