[JPA] Overlaps mit JPQL darstellen

Jastol

Mitglied
Hi,

Gibt es eine Möglichkeit das SQL Statement OVERLAPS mit JPQL darzustellen?
Um genau zu sein ist das mein Code:
SQL:
SELECT DISTINCT auf2.id FROM public.auf auf, public.auf auf2 WHERE auf.pat_pid = ? AND auf2.pat_paid != ? AND auf.z = auf2.z AND ((?,?) OVERLAPS (auf2.start, auf2.end))AND ((?,?) OVERLAPS (auf.start, auf.end))AND ((auf.start, auf.end) OVERLAPS (auf2.start, auf2.end))

Danke und viele Grüße
 
OVERLAPS gibt es garnicht in allen DBMSen. Deswegen geht es mit JPQL nicht. Du musst eine native Query erstellen mittels einer der Methoden
Code:
EntityManager.createNativeQuery(...)
. Diesen kannst du den nativen SQL-String aus Deinem Post übergeben.
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank, konnte es jetzt mit NativeQuery wie folgt gelöst:

Java:
				suche = entityManager
						.createNativeQuery(
								" SELECT DISTINCT * FROM public.aufenthalt auf2, public.aufenthalt auf WHERE auf.patient_patientid = :pid AND auf2.patient_patientid != :pid AND auf.zimmer = auf2.zimmer AND ((:start, :end) OVERLAPS (auf2.zimmeraufnahme, auf2.zimmerentlassung))AND ((:start, :end) OVERLAPS (auf.zimmeraufnahme, auf.zimmerentlassung))AND ((auf.zimmeraufnahme, auf.zimmerentlassung) OVERLAPS (auf2.zimmeraufnahme, auf2.zimmerentlassung))",
								Aufenthalt.class);
				suche.setParameter("pid", id);
				suche.setParameter("start", startDate);
				suche.setParameter("end", endDate);
 

Zurück
Oben