Mein Problem aus JPQL, Join, Straßen wurde ja zum Glück schon gelöst. Jetzt steht aber schon gleich das nächste vor der Tür
Folgende Abfrage hatte ich ja letztendlich um die Städte abzufragen:
"SELECT DISTINCT sta FROM Staedte sta, Strassen str, Staedte sta2 "
+ "WHERE sta.stadtname = :searchedCityName "
+ "OR (sta2.stadtname = :searchedCityName AND str.stadtnummer1 = sta2.stadtnummer AND str.stadtnummer2 = sta.stadtnummer) "
+ "OR (sta2.stadtname = :searchedCityName AND str.stadtnummer1 = sta.stadtnummer AND str.stadtnummer2 = sta2.stadtnummer)",
Stadt.class);```
Um die zugehörigen Straßen-Verbindungen abzufragen habe ich folgendes (funktioniert!):
```query = em.createQuery("SELECT DISTINCT str FROM Strassen str, Staedte sta "
+ "WHERE str.stadtnummer1.stadtName = :searchedCityName "
+ "OR str.stadtnummer2.stadtName = :searchedCityName",
Strasse.class);```
Bisher funktionierten beide Abfragen einwandfrei.
Nun wurden allerdings vorgestern neue Straßen in die Access-Datenbank eingefügt. Diese werden von den Abfragen nicht mit eingelesen (also wirklich nur die neu hinzugefügten).
Gestern wurden weitere neue Straßen hinzugefügt. Diese werden auch nicht mit eingelesen. Seit dem die ganz neuen von gestern aber eingetragen sind, werden die von vorgestern auf einmal doch mit eingelesen. Ich finde bloß nicht den Fehler, warum das passiert.
Hat hier vielleicht jemand eine Idee woran's liegen könnte?
Viele Grüße,
Daten-Droid ;)
Habe die Anwendung neu gestartet, die neuen Datensätze werden immer noch nicht gefunden.
Den EM schließe ich direkt nach der jeweiligen Abfrage (ich eröffne je Abfrage einen neuen EM, führe die Abfrage aus und schließe den EM anschließend wieder).
[QUOTE=Bleiglanz]Wer ode wie werden denn die neuen Datensätze eingefügt: mit Hibernate/Java usw. oder anderweitig?
Erfüllen die neuen Straßen überhaupt die join-Bedingungen, etc?
Irgendeine Art von Cache im Einsatz?[/QUOTE]
Die neuen Datensätze wurde von einem Kollegen direkt in Access via Formular eingefügt. Ich selber greife aus meiner Anwendung nur lesend darauf zu.
Von einem Cache wüsste ich jetzt nichts.
[QUOTE=Bleiglanz;103066]Da fällt mir noch ein (da der JDBC-ODBC-Treiber in Java 8 ja endlich raus geworfen wurde): Wie greifst du eigentlich auf deine Access-Datenbank zu?
Übrigens ist Access nicht wirklich in der Lage, gleichzeitig mehrere Benutzer zu bedienen.[/QUOTE]
Ich greife via JPA und UCanAccess auf die Access-Datenbank zu.
Wäre es möglich, dass Access bestimmte Stände zwischenspeichert und neueste Stände erst später aktualisiert?
Hab schon länger nix mehr mit JPA und Co gemacht, aber afair wird da einiges gecached (zumindest so meine Erfahrung mit hibernate). D.h. Änderungen direkt in der DB sind kritisch und werden aufgrund des Caches vom Programm möglicherweise garnicht wahrgenommen, da keine Abfrage auf der DB statt findet.
Was man auch noch prüfen kann: werden die Daten transaktionsgesichert in die DB geschrieben? Falls ja, dann ist diese vielleicht noch offen.
[quote=Tomate_Salat;103077]werden die Daten transaktionsgesichert in die DB geschrieben?[/quote]noch nicht gemerkt, dass wir hier von Access reden? Das überhaupt Datenbank zu nennen grenzt schon am Beleidigung für richtige DBMS…
[quote=maki]Heisst im Klartext:
Access ist immer noch Schrott, sollte man nie Produktiv verwenden ausser vielleicht lokal fuer einen einzelnen User[/quote]
Doch doch, alle alle Datenquellen sollten verlinkte Datenbank-Tabellen in einem SQL-Server sein. Dann hat man einen schönen Reportgenerator und kann schnell läppische, halb-funktionierende Oberflächen zusammenklicken.
Geht halt nur nachts, wenn gerade keiner die .accdb-Datei mit MS-ACCESS geöffnet hat
Die Diskussion an dieser Stelle, ob Access oder nicht, bringt nichts, weil ich schlicht und einfach für die Aufgabe die seit mehreren Jahren bestehende und kaum genutzte Access-Datenbank (Entschuldigt diesen Begriff) verwenden soll.
Ich bin im Moment auch die einzige Person, die darauf zugreift und damit arbeitet, es kann also nicht daran liegen, dass irgendjemand anderes auf die Datei zugreift. Der Kollege, der die neuen Datensätze hinzugefügt hat, hat die Datei auch nicht mehr geöffnet
Klang vorher aber ein wenig anders und verwirrt mich auch gerade. Also nochmal: wurden die Daten abseits von deinem Programm eingefügt?
Ich würde hier nach wie vor auf ein Cachingproblem tippen. Datensätze sollten am besten über dein Programm (und nicht über das Accessformular) in die Datenbank (ja ich mag Paradoxons!) geschrieben werden.
(Ein ähnliches Problem hatte ich auch mal, als ich Testweise ein Tool für eine Webseite schreiben wollte. Änderungen welche ich über die Webseite gemacht hatte, kamen im Programm nicht an. Habe dafür aber leider nie wirklich eine Lösung gefunden/gesucht gehabt.)