spring data rest serviceを使用してneo4jで関係を削除する方法の例を作成しようとしています。あなたはneo4j-movies-exampleを使ってテストすることができます。spring data rest with neo4j:関係を削除するには
私は一人1についての情報を取得する場合、私は1枚のフィルム
curl -s http://localhost:8080/persons/1
{
"name" : "Keanu Reeves",
"born" : 1964,
"_links" : {
"self" : {
"href" : "http://localhost:8080/persons/1"
},
"person" : {
"href" : "http://localhost:8080/persons/1"
},
"movies" : {
"href" : "http://localhost:8080/persons/1/movies"
}
}
}
は関係がまだあるエンティティを変更した後あります参照してください。
curl -s -X PUT -H "Content-Type:application/json" -d '{ "name" : "Keanu Reeves", "born":1964, "movies": [] }' http://localhost:8080/persons/1
{
"name" : "Keanu Reeves",
"born" : 1964,
"_links" : {
"self" : {
"href" : "http://localhost:8080/persons/1"
},
"person" : {
"href" : "http://localhost:8080/persons/1"
},
"movies" : {
"href" : "http://localhost:8080/persons/1/movies"
}
}
}
さえcurl -s -X DELETE http://localhost:8080/persons/1/movies
は効果がありません。では、spring-data-restでneo4jの関係を削除するにはどうすればいいですか?
[更新1]これを追跡しようとしましたが、このIssueで終了しました - >固定、HashSetとHashCode-Methodに問題がありました。
[更新2] Neo4j-OGMは正常に動作していますが、Springデータが問題になることを示すexampleが作成されました。 - >修正 - 問題は、@Transactional
が見つからなかったので、リポジトリが呼び出されるたびに、新しいトランザクションとセッションが作成されました。更新の場合、ロードと保存は同じトランザクション内になければなりません。
[更新3]他の問題を修正した後、私はその問題を理解することができます。 PATCH-Requestでは、オブジェクトはsave-methodとは別のセッションでロードされます。振る舞いはオブジェクトがセッション[412]でロードされているのと同様に、オブジェクトは予期された方法で操作され、オブジェクトはセッション[417]で保存されます。
spring.data.neo4j.open-in-view=true
これは通常のコントローラーではなく、春データRESTリソースに対してのみ機能:
感謝を - 両方の情報が参照ガイドに行く必要があります。 – niels