diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/notifier/NotifierService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/notifier/NotifierService.java index 51f223ad4fa..8e9a509680c 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/person/notifier/NotifierService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/person/notifier/NotifierService.java @@ -91,14 +91,10 @@ public Notifier getByUuidAndTime(String uuid, Instant time) { final Timestamp timestamp = Timestamp.from(time); - final String sql = "SELECT " + "a.id AS id, a.uuid AS uuid," + "COALESCE(b.changedate, a.changedate) AS changedate," - + "a.creationdate AS creationdate, a.change_user_id AS change_user_id," - + "COALESCE(b.registrationnumber, a.registrationnumber) AS registrationnumber," + "COALESCE(b.firstname, a.firstname) AS firstname," - + "COALESCE(b.lastname, a.lastname) AS lastname," + "COALESCE(b.address, a.address) AS address," + "COALESCE(b.email, a.email) AS email," - + "COALESCE(b.phone, a.phone) AS phone, "+ "COALESCE(b.agentfirstname, a.agentfirstname) AS agentfirstname, " - + "COALESCE(b.agentlastname, a.agentlastname) AS agentlastname "+ "FROM notifier a " + "LEFT JOIN " + "(SELECT * FROM notifier_history " - + "WHERE uuid = :uuid AND changedate <= CAST(:changeDate AS TIMESTAMP) " + "ORDER BY changedate DESC LIMIT 1" + ") b ON a.uuid = b.uuid " - + "WHERE a.uuid = :uuid"; + final String sql = "SELECT * FROM (" + + "SELECT * FROM (SELECT * FROM notifier_history b WHERE b.uuid = :uuid AND changedate <= CAST(:changeDate AS TIMESTAMP) ORDER BY changedate DESC LIMIT 1) " + + "UNION SELECT * FROM notifier a WHERE a.uuid = :uuid) " + + "WHERE uuid = :uuid AND changedate <= CAST(:changeDate AS TIMESTAMP) ORDER BY changedate DESC LIMIT 1;"; Query query = em.createNativeQuery(sql, Notifier.class); query.setParameter("uuid", uuid);