2

次のように、いくつかの簡単なステートメントを Sesame リポジトリに追加しようとしています。

    RepositoryConnection connection = repository.connection
    connection.autoCommit = false
    try {
        ValueFactory vf = repository.getValueFactory()
        def dummyS = vf.createURI("http://some/uri")
        def dummyP = vf.createURI("http://some/uri/hasItem")
        uris?.each { uri ->
            connection.add(listS, listP, vf.createURI(uri))
        }
        def stmts = connection.getStatements(listS, null, null, true) ...

これは、NativeStore を使用してローカルの SailRepository に対して実行するとうまく機能します。しかし、これを別のサーバーでホストされている HTTPRepository に接続すると、「追加」は黙って失敗したように見えます。例外はスローされませんが、返される stmts は空です。

これを引き起こしている可能性のあるアイデアはありますか?前もって感謝します!

4

1 に答える 1

0

これが失敗する理由は、autoCommit=false を使用しているためです。ローカル設定では、Sesame のトランザクション分離により、まだコミットされていない場合でも、同じ接続でクエリを実行すると、追加されたデータが表示されるようになります。

ただし、HTTPRepository クラスはトランザクションの分離をサポートしていません。追加されたトリプルは、コミットするまで表示されません。したがって、修正するには、次を追加します。

connection.commit(); 

getStatements() 呼び出しの前で、問題ないはずです。

于 2010-09-19T15:35:33.767 に答える