Jpql-Anweisung, um mehrere Bedingungen einzubeziehenJava

Java-Forum
Anonymous
 Jpql-Anweisung, um mehrere Bedingungen einzubeziehen

Post by Anonymous »

Ich verwende den Scheduler, um Aufgaben basierend auf dem Status des zugehörigen Dokuments aus der Datenbank abzurufen. Ich habe eine Beziehung zwischen einer Aufgabe und vielen Dokumenten, und jede Dokumententität hat ihren eigenen Statuswert.
Ich muss eine bestimmte Aufgabe mit den folgenden Kriterien aus dem Dokument auswählen:
  • Status 101: maximale Version des Dokuments abrufen
  • Status 102: beliebige Version abrufen, egal um welche Version es sich handelt (und 102 gegenüber 101 bevorzugen)
Zu diesem Zweck verwende ich dieses JPQL:

Code: Select all

select task, document.id from Task task
join Document document on task.uuid = document.taskUuid
where (
document.status = 102
or (document.status = 101
and document.wersjaNumer =
(select max(sub.wersjaNumer) from Document sub
where sub.numerUuid = document.numerUuid)
)
)
order by case when document.status=102 then 1 else 2 end
Soweit ich weiß, sollte dies nur eine Instanz von Task mit der angegebenen UUID abrufen.
Also hier:

Code: Select all

Task(uuid = "xxx")
Document(taskUuid = "xxx", status=101)
Document(taskUuid = "xxx", status=102)
Ich erwarte nur eine Aufgabe und eine document.id, die mit status=102 verknüpft sind, erhalte aber beide Ergebnisse. Ich vermute, dass ich etwas falsch gemacht habe

Code: Select all

order by case when document.status=102 then 1 else 2 end
Teil. Irgendwelche Ideen, wie man das Problem beheben kann?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post