我正在尝试向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为空。
任何人都有任何想法可能导致这个?提前谢谢!
答案 0 :(得分:0)
此失败的原因是您使用的是autoCommit = false。在本地设置中,Sesame的事务隔离需要注意即使尚未提交,在查询同一连接时也会看到添加的数据。
但是,HTTPRepository类不支持事务隔离:在您提交之前,添加的三元组不可见。所以,要修复,请添加:
connection.commit();
在getStatements()调用之前你应该没问题。