Ich möchte bestimmte Datensätze aus einer Tabelle löschen. Diese Datensätze enthalten einige untergeordnete Datensätze in anderen Tabellen.Ruhezustand; HQL; Warum funktioniert die Löschabfrage nicht, aber wählen Sie?
Um die Hauptsätze löschen zu können, muss ich zuerst die untergeordneten Datensätze löschen. Hier
ist das Beispiel der HQL verwendet:
delete from ItineraryBooking ib where ib.booking.user.id = :paramId
Grundsätzlich sollte dies alle ItineraryBookings entfernen (Datensätze in separaten Tabelle), werden diese auf der Buchungstabelle verknüpft. Eine Buchungstabelle kann mit der Benutzertabelle verknüpft werden.
Das Seltsame ist, dass, wenn Sie die oben ändern:
from ItineraryBooking ib where ib.booking.user.id = :paramId
und führen eine Query.list(), wird es gut funktionieren.
Wann immer ich die Lösch-Variante ausführen möchte, sieht es aus wie Hibernate erzeugt eine ungerade Löschanweisung. Ist mein HQL falsch? Oder ist es eine Hibernate-Eigenart?
Ja, Sie haben Recht, sie sind Joines. Ich werde in die kaskadierenden Löschfunktionen schauen, weil ich glaube, dass es * so funktionieren sollte, aber das tut es einfach nicht. Es gab einen Grund, warum die anderen verwandten Datensätze explizit gelöscht werden mussten. Danke für die Antwort! –