Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheJena:删除模型中的所有数据_Java_Jena - Fatal编程技术网

Java ApacheJena:删除模型中的所有数据

Java ApacheJena:删除模型中的所有数据,java,jena,Java,Jena,我正在尝试使用以下类中的ClearModel()方法删除输入到模型中的所有数据 public class JenaDatabaseHelper { private Model model; private Dataset dataset; public Model getJenaModel(){ if(model!=null){ return model; } else{ String directory = "JenaData

我正在尝试使用以下类中的ClearModel()方法删除输入到模型中的所有数据

    public class JenaDatabaseHelper {

private Model model;
private Dataset dataset;

public Model getJenaModel(){
    if(model!=null){
        return model;
    }
    else{
        String directory = "JenaDatabase" ;
        try{
            dataset = TDBFactory.createDataset(directory);
            model = dataset.getNamedModel("DB");
            return model;
        }catch(Exception e){
            System.out.println("Error when retrieving model: "+e.getMessage());
        }              
    }
    return null;
}

public void SaveAndCloseModel(){
    if(model!=null && dataset!=null){
        model.commit();
        model.close();
        dataset.close();
    }
}

public void ClearModel(){
    if(model!=null && dataset!=null){
        model.removeAll();
        SaveAndCloseModel();
    }
}

但是,当我重新启动应用程序并遍历语句时,没有任何内容被删除。

我注意到,如果
model
为null,则
ClearModel
将不执行任何操作。在这种情况下,您可能希望在该条件上放置一个else分支以打印警告。例如,如果您创建一个新的
jenadatabaseheloper
实例,而不调用
getJenaModel()
首先初始化实例变量,则可能会发生这种情况


事实上,考虑到存在未初始化变量的风险,我个人会将
getJenaModel
的功能放入构造函数中。或者,您可以通过getter方法访问
模型来惰性地评估它们,该方法首先检查
模型
是否已初始化。

model.removeAll()
Statement.remove()
都在Jena单元测试中进行了广泛的测试,因此它们肯定有效。我们需要您的确切设置的更多详细信息来诊断您的问题。你怎么知道模型中还有数据?我已经用全班同学更新了这个问题。我正在使用TDB保存模型,但是model.removeAll()是否仍然有效?我知道当我重新启动应用程序(在使用ClearModel()方法之后)并遍历语句时,数据仍然存在。你是对的,我认为这是一个更复杂的问题,但我忽略了模型为空的事实。谢谢你的帮助:)