diff --git a/src/main/java/de/samply/db/repository/NotificationRepository.java b/src/main/java/de/samply/db/repository/NotificationRepository.java index a1f14b2..6ce399c 100644 --- a/src/main/java/de/samply/db/repository/NotificationRepository.java +++ b/src/main/java/de/samply/db/repository/NotificationRepository.java @@ -3,6 +3,7 @@ import de.samply.db.model.Notification; import de.samply.db.model.Project; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import java.util.List; @@ -10,6 +11,9 @@ @Repository public interface NotificationRepository extends JpaRepository { - List findAllByProjectOrderByTimestampDesc(Project project); - List findAllByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(Project project, String bridgehead); + List findByProjectOrderByTimestampDesc(Project project); + + @Query("SELECT n FROM Notification n WHERE n.project = :project AND (n.bridgehead = :bridgehead OR n.bridgehead IS NULL) " + + "ORDER BY n.timestamp DESC") + List findByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(Project project, String bridgehead); } diff --git a/src/main/java/de/samply/notification/NotificationService.java b/src/main/java/de/samply/notification/NotificationService.java index aa7c035..e488d80 100644 --- a/src/main/java/de/samply/notification/NotificationService.java +++ b/src/main/java/de/samply/notification/NotificationService.java @@ -72,10 +72,10 @@ public List fetchUserVisibleNotifications( List bridgeheads = fetchUserVisibleBridgeheads(bridgheadOptional); projects.forEach(project -> { if (bridgeheads.isEmpty() && sessionUser.getUserOrganisationRoles().containsRole(OrganisationRole.PROJECT_MANAGER_ADMIN)) { - notificationRepository.findAllByProjectOrderByTimestampDesc(project); + result.addAll(notificationRepository.findByProjectOrderByTimestampDesc(project)); } else { bridgeheads.forEach(bridgehead -> result.addAll( - notificationRepository.findAllByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(project, bridgehead))); + notificationRepository.findByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(project, bridgehead))); } }); return result.stream().map(notification ->