Hallo zusammen,
mich beschäftigt seit geraumer Zeit ein Problem mit Apache Derby und dem EntityManager.
Ich habe einen Quellcode übernommen, kann diese Person aber dazu im Moment nicht befragen.
Folglich steige ich durch einige Dinge nicht so durch, weil es Fremdcode ist.
Im Moment schreibe ich mehrere Datensätze in die Datenbank und bearbeite diese.
In dem Programm möchte ich gleich danach auch darauf zugreifen können.
Leider ist es so, dass neu eingepflegte Datensätze erst nach einem Neustart des Programms (ich vermute also nach einem neuen öffnen der Datenbank) mit SELECT abgerufen werden können. Wie kann dies trotz Commit Befehl passieren?
Der Update Code ist ca. wie folgt:
Möchte ich an späterer Stelle und in anderer Methode etwas selektieren, sieht das wie folgt aus:
Woran liegt diese zeitliche Verzögerung? Ich möchte das Programm nicht neustarten müssen, um auf neue Ergebnisse zurückgreifen zu können.
Der FlushMode ist übrigens "Auto", falls dies relevant ist.
Besten Dank schon mal.
mich beschäftigt seit geraumer Zeit ein Problem mit Apache Derby und dem EntityManager.
Ich habe einen Quellcode übernommen, kann diese Person aber dazu im Moment nicht befragen.
Folglich steige ich durch einige Dinge nicht so durch, weil es Fremdcode ist.
Im Moment schreibe ich mehrere Datensätze in die Datenbank und bearbeite diese.
In dem Programm möchte ich gleich danach auch darauf zugreifen können.
Leider ist es so, dass neu eingepflegte Datensätze erst nach einem Neustart des Programms (ich vermute also nach einem neuen öffnen der Datenbank) mit SELECT abgerufen werden können. Wie kann dies trotz Commit Befehl passieren?
Der Update Code ist ca. wie folgt:
Java:
if(!entityManager.getTransaction().isActive()) entityManager.getTransaction().begin();
Query q = entityManager.createQuery("UPDATE Daten1 d SET name= :name WHERE d.id= :id");
q.setParameter("name", name1);
q.setParameter("id", id1);
q.executeUpdate();
entityManager.getTransaction().commit();
Möchte ich an späterer Stelle und in anderer Methode etwas selektieren, sieht das wie folgt aus:
Java:
List<Daten1> liste1 = new ArrayList<Daten1>();
liste1 = entityManager.createQuery("SELECT d FROM Daten1 d WHERE d.id < 10").getResultList();
for (int i = 0; i < exportVuls.size(); i++) {
Daten1 d = liste1.get(i);
System.out.println(d.name()+" " + d.id());
}
Woran liegt diese zeitliche Verzögerung? Ich möchte das Programm nicht neustarten müssen, um auf neue Ergebnisse zurückgreifen zu können.
Der FlushMode ist übrigens "Auto", falls dies relevant ist.
Besten Dank schon mal.