2016-09-09 5 views
1

Spring-Data-neo4j-4を使用したSpringブート、neo4j環境を検討しています。削除に失敗したときに削除を行い、エラーメッセージが表示されます。SpringデータNeo4j影響を受ける行数

私の問題は、Repository.delete()がvoidを返すためです。削除が何かを変更した場合、私はideiaを持っていません。

最初の質問:最後のクエリの影響を受ける行を取得する方法はありますか?私はそれを削除する前に値が存在する場合は、データベースをチェックするために照会上記のコードでは

public void deletesomething(Long somethingId) { 
    somethingRepository.delete(getExistingsomething(somethingId).getId()); 
} 

private something getExistingsomething(Long somethingId, int depth) { 
    return Optional.ofNullable(somethingRepository.findOne(somethingId, depth)) 
      .orElseThrow(() -> new somethingNotFoundException(somethingId)); 
} 

:例えばPLSQLでは、私はとにかくSQLの%のROWCOUNT

を行うことができ、私は次のコードを試してみました。 2番目の質問:別の方法をお勧めしますか?

これで、複雑なものを追加するだけで、クラスタデータベースが作成され、db1は作成、更新、削除のみでき、db2とdb3は読み取りのみ可能です(これはクラスタソケットによって保証されます)。 db2とdb3は、複製プロセスからdb1からデータを受け取ります。 これまでのところ、レプリケーションには最大90秒かかります。つまり、データベースの状態は90年代まで異なります。

getExistingsomething(somethingId).getId() // will hit db2 
somethingRepository.delete(...) // will hit db1 

などを複製が、このコードは例外をスローウィルDB2に値を挿入していない場合:意味デバッグに

public void deletesomething(Long somethingId) { 
    somethingRepository.delete(getExistingsomething(somethingId).getId()); 
} 

:上記のコードに再び探し

。 2番目の質問は、それらのソケットを変更せずに私が削除して正しい応答を与える方法はありますか?

答えて

1

現在のところ、Spring Data Neo4jではサポートされていませんが、機能要求を開こうとしています。

一方、最も簡単な回避策は、抽象化のOGMレベルに落とすことです。

  • Session

例にorg.neo4j.ogm.session.Session

  • 使用以下の方法で注入されたクラスを作成する:

    fun deleteProfilesByColor(color : String) 
    { 
        var query = """ 
        MATCH (n:Profile {color: {color}}) 
        DETACH DELETE n; 
        """ 
    
        val params = mutableMapOf(
          "color" to color 
        ) 
    
        val result = session.query(query, params) 
        val statistics = result.queryStatistics() //Use these! 
    } 
    
    (例えば、手にあったKotlin、です)
  • 関連する問題