Ich habe eine Anwendung, wo ich JPA
verwenden, um auf die Daten in einer Datenbank zuzugreifen. Jetzt müsste ich eine komplexere Abfrage durchführen, aber ich kann nicht herausfinden, wie ich es machen soll.JPA-Abfrage mit Bedingung für OneToMany Hibernate-Beziehung
In meiner Repository-Schnittstelle, ich habe eine Arbeits Abfrage, die alle Chatthreads eines Benutzer auswählt, durch seine Benutzername:
@Query("SELECT chatThread FROM ChatThread chatThread WHERE (chatThread.userId) = (:id)")
public List<ChatThread> find(@Param("id") String id);
Aber wie es jetzt einstellen, werden nur Nachrichten wählen, die nicht gelesen wurden noch? Es existiert ein hibernate OneToMany relationship
und das Schema sieht wie folgt aus:
SELECT chatThread FROM ChatThread chatThread WHERE (chatThread.userId) = (:id) AND NOT EXISTS (SELECT message FROM chatThread.messages message WHERE message.read = TRUE)
schreiben Sie eine zweite Abfrage mit dieser zusätzlichen Bedingung. –
..ich verstehe nicht, was meinst du? Würde es dir nichts ausmachen, es mehr zu erklären und als Antwort zu posten? – Dworza
Willst du _messages_ jetzt oder immer noch chatThreads auswählen, nur gefiltert jetzt auf diejenigen, die ungelesene Nachrichten haben? –