iterator.remove()从数据库中删除对象

时间:2017-10-06 13:50:28

标签: java hibernate

我正在使用迭代器遍历对象列表。

    List<FormQuestion> questions = regMetadata.getFormQuestions();
    Iterator<FormQuestion> iter = questions.iterator();
    while (iter.hasNext()){
        FormQuestion question = iter.next();
        //if invalid question, delete from list
        if(question.getModuleType().intValue() == -1) {
            iter.remove();
        } 
    }

iter.remove()也正在从DB中删除对象。有没有办法只从这个列表(问题)而不是从数据库中删除对象?我正在使用Hibernate&amp; MySQL的。

2 个答案:

答案 0 :(得分:1)

我会过滤问题,将其写入新的List

List<FormQuestion> questionsAll = regMetadata.getFormQuestions();
List<FormQuestion> questions = new ArrayList<>();
for (FormQuestion question : questionsAll) {
    // add to the list, unless invalid
    if (question.getModuleType().intValue() != -1) {
        questions.add(question)
    } 
}

另外,我使用for-each循环而不是Iterator。你甚至可以将它重写为流。

答案 1 :(得分:0)

您的列表由hibernate管理。您应该首先从持久性上下文中分离列表,然后您可以从列表中删除而不从数据库中删除它。我认为这里的图片可以帮到你。 http://www.objectdb.com/java/jpa/persistence/managed