Добавление оператора в Сезам с использованием HTTPRepository - PullRequest
2 голосов
/ 26 мая 2010

Я пытаюсь добавить несколько простых операторов в репозиторий 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) ...

Это прекрасно работает, когда выполняется с локальным SailRepository с использованием NativeStore. Но при подключении этого к HTTPRepository, размещенному на другом сервере, «add», по-видимому, завершается с ошибкой. Не выдается никаких исключений, но возвращенные stmts пустые.

У кого-нибудь есть идеи, что может быть причиной этого? Заранее спасибо!

1 Ответ

0 голосов
/ 19 сентября 2010

Причиной этого является то, что вы используете autoCommit = false. В локальных настройках изоляция транзакций Sesame заботится о том, чтобы даже когда они еще не зафиксированы, добавленные данные были видны при запросах по тому же соединению.

Однако класс HTTPRepository не поддерживает изоляцию транзакции: добавленные триады не видны, пока вы не подтвердите. Итак, чтобы исправить, добавьте:

connection.commit(); 

перед вызовом getStatements () и все будет в порядке.

...