1

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リソースに対してのみ機能:

答えて

2

設定は春ブートapplication.propertiesでOpenSessionInViewInterceptorを有効にするためにあります。

あなたは(任意の@Configurationクラスに)春データRESTのためのインターセプタを有効にするには、以下の構成を提供することができます:

@Bean 
public OpenSessionInViewInterceptor openSessionInViewInterceptor() { 
    return new OpenSessionInViewInterceptor(); 
} 

@Bean 
public MappedInterceptor myMappedInterceptor() { 
    return new MappedInterceptor(new String[]{"/**"}, openSessionInViewInterceptor()); 
} 
+0

感謝を - 両方の情報が参照ガイドに行く必要があります。 – niels

関連する問題