hibernateSession.createQuery ("select foo where id = 1");
// Dieser Befehl gibt das Item mit der ID 1 zurück.
// [BREAK POINT STOP] ==> Ich gehe in MySQL und lösche diesen Artikel manuell.
// [BREAK POINT CONTINU]
hibernateSession.createQuery ("Wählen Sie foo where id = 1");
// Dieser Befehl gibt auch das Item mit ID 1 zurück! :-(
Es ist das gleiche mit hibernateSession.flush()/hibernateSession.clean()
Ich denke, dass ich auch nicht meine Hibernate-Cache verwenden ...Ruhezustand - Gleiches Ergebnis nach Aktualisierung/select
Antwort
Auf jeden Fall ein Problem Caching. Verwenden Sie die gleiche Sitzung? Versuchen Sie, die Sitzung zu schließen und eine neue ab Werk zu erhalten.
Die erste Abfrage hat das Objekt in die Hibernation-Sitzung geladen Ihr Löschen der Zeile in der Datenbank hat keine Auswirkungen, da Sie sind mit derselben Sitzung
Sie haben Er muss eine neue Sitzung oder evict das Objekt aus der Sitzung starten.
Versuchen Sie, diese
Object o = hibernateSession.createQuery("select foo where id = 1").uniqueResult();
// [BREAK POINT STOP] ==> I go in MySQL and I delete this item manualy.
hibernateSession.evict(o);
hibernateSession.createQuery("select foo where id = 1");
Wenn das funktioniert, dann bist du Problem mit der L1-Cache ist. Der L1-Cache befindet sich IMMER dort, ist einem bestimmten Session-Objekt zugeordnet und unabhängig vom L2-Cache, worüber alle Dokumentationen zum Hibernate-Cache sprechen. Der Zweck des L1-Cache besteht darin, die Anforderung zu erfüllen, dass, wenn Sie in derselben Sitzung zweimal dasselbe Datenbankobjekt erhalten, die beiden Referenzen r1 == r2 erfüllen.
Grundsätzlich ist die Verwendung von Ruhezustand, wenn es gleichzeitige Änderungen an der DB geben kann, nicht einfach.
- 1. Expression nach Gruppe hat durch gleiches Ergebnis
- 2. Zwei Asynchron-AJAX-Aufrufe kehren gleiches Ergebnis
- 3. std :: random_shuffle erzeugt gleiches Ergebnis jedes Mal
- 4. Gleiches Ergebnis von Stateful, Stateless und Singleton EJB Beans
- 5. immer gleiches Top-1 Ergebnis in SQL Server
- 6. Verwenden von SQL-Spaltennamen im Ruhezustand createSQlquery-Ergebnis
- 7. Ruhezustand
- 8. Ruhezustand. Standardspaltenwert nach der Spaltenerstellung hinzufügen
- 9. Sortieren nach Klausel funktioniert nicht im Ruhezustand
- 10. Ruhezustand Kriterienreihenfolge nach einem bestimmten Status
- 11. verhindern Spülung nach dem Zusammenführen im Ruhezustand
- 12. PostgreSQL gleiches Aggregat
- 13. Gleiches Objekt, verschiedene Parameter
- 14. Ergebnis nach Häufigkeit sortieren
- 15. Ruhezustand 4 Sitzung log4j
- 16. Ruhezustand löschen
- 17. Gleiches Datumsformat über mehrere Lokalisierungen
- 18. JSP-Fehler - Gleiches Symbol erwartet
- 19. Javascript für gleiches Symbol ersetzen
- 20. Gleiches WebView auf jeder Ansicht
- 21. Gleiches Webview auf jeder Ansicht
- 22. Gleiches Muster, aber unterschiedliche Ergebnisse
- 23. Ungerade Ergebnis nach Einstellungsbereichen gleich
- 24. Python: Ergebnis Ranking nach Klassen?
- 25. Umrechnung von Millisekunden zu Unix-Zeitstempeln aus verschiedenen Zeiten gibt gleiches Ergebnis
- 26. PS 4.0 Windows 7/Windows 2012 R2 Gleiches Skript unterschiedliches Ergebnis
- 27. SQL Server 2008 Count in Case-Anweisung gleiches Ergebnis ergeben mit unterschiedlichen Parametern
- 28. Java-Ruhezustand Laufzeit Ausnahme
- 29. MySQL-Verbindung und Ruhezustand c3p0 Einstellungen, Timeout nach 8 Stunden?
- 30. Ruhezustand, Sitzung, Lazyloading