# Query mit Schleife durchlaufen



## dschuebel (5. Dez 2016)

Hallo zusammen,
ich hoffe ich bin hier richtig.
Ich habe eine Query erstellt und möchte diese gerne per Schleife durchlaufen und für alle Ergebnisse der Query in meiner Datenbank einen Wert ändern. Aktuell schaut es so aus:

*Meine Methode für die Query:*

```
@Produces
    @Named
    public List<Bewerbung> getZbFBewerberAnnehmen()  {
       
        TypedQuery<Bewerbung> qu = em.createNamedQuery("Bewerbung.findeZbfBewerber", Bewerbung.class);
       
        ZbF id = zec.getNeuezbF();
        anzahl = zec.getNeuezbF().getMaxBelegung();
        qu.setParameter("id", id);
       
        List<Bewerbung> x= qu.setMaxResults(anzahl).getResultList();
       
        return x;
    }
```

*Meine Methode für das durchlaufen:


		Code:In die Zwischenablage kopieren


    public String bewerberZulassen(Bewerbung bew) {
   
        bst = bewm.getZbFBewerberAnnehmen();
   
        for(Bewerbung b : bst ){
           
            zva = new Bewerbung();
            zva = bew;
            zva.setOffen(false);
            zva.setZulassung(true);
           
            bewm.updaten(zva);           
        }

        return "/Dozent/zbF_edit_freigegeben.xhtml";
    }

*
Ich hoffe ihr könnt mir helfen 

LG
DS


----------



## Thallius (5. Dez 2016)

und warum nicht einfach die Änderung mit einem Query statt einer Schleife?


----------



## dschuebel (5. Dez 2016)

Thallius hat gesagt.:


> und warum nicht einfach die Änderung mit einem Query statt einer Schleife?



Hi Thallius, danke für den Beitrag! Meinst du quasi pet UPDATE und dann bei Klick auf Button die neue Query auslösen? Muss ich mal testen


----------



## stg (5. Dez 2016)

Ich vermiss irgendwie eine Frage...


----------



## dschuebel (5. Dez 2016)

stg hat gesagt.:


> Ich vermiss irgendwie eine Frage...



Da o.g. genannter Code nicht funktioniert, ist die Frage wie es denn funktionieren könnte


----------



## stg (5. Dez 2016)

Und was funktioniert nicht? Sollen wir das jetzt raten? 


```
for(Bewerbung b : bst ){           
            zva = new Bewerbung();
            zva = bew;
            //...
```

Der Teil sieht jedenfalls sehr krumm aus..


----------



## SeriousD0nkey (6. Dez 2016)

Wenn du alle Datensätze die du durch die Query bekommst verändern willst, dann lass, wie Thallius bereits schrieb, dass die Datenbank machen und gehe nicht den Umweg die Datensätze einzeln in Java zu verändern.

Und wenn du es dennoch (aus welchem Grund auch immer) in Java machen willst, dann musst du schon genauer beschreiben, was das Problem ist.


----------

