diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java index ecf9c1c95f..d9fd2cc66d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultAlarmQueryRepository.java @@ -148,6 +148,10 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository { } EntityDataSortOrder sortOrder = pageLink.getSortOrder(); + if (sortOrder != null && EntityKeyType.ALARM_FIELD.equals(sortOrder.getKey().getType()) && ASSIGNEE_KEY.equalsIgnoreCase(sortOrder.getKey().getKey())) { + sortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ALARM_FIELD, ASSIGNEE_EMAIL_KEY), sortOrder.getDirection()); + } + List alarmFields = new ArrayList<>(); for (EntityKey key : query.getAlarmFields()) { if (EntityKeyType.ALARM_FIELD.equals(key.getType()) && ASSIGNEE_KEY.equalsIgnoreCase(key.getKey())) { @@ -265,6 +269,8 @@ public class DefaultAlarmQueryRepository implements AlarmQueryRepository { } if (pageLink.getAssigneeId() != null) { + addAndIfNeeded(wherePart, addAnd); + addAnd = true; ctx.addUuidParameter("assigneeId", pageLink.getAssigneeId().getId()); wherePart.append(" a.assignee_id = :assigneeId"); } diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java index 73a489ab68..9c81bfd232 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseAlarmServiceTest.java @@ -267,6 +267,7 @@ public abstract class BaseAlarmServiceTest extends AbstractServiceTest { pageLink.setPage(0); pageLink.setPageSize(10); pageLink.setAssigneeId(tenantUser.getId()); + pageLink.setSortOrder(new EntityDataSortOrder(new EntityKey(EntityKeyType.ALARM_FIELD, "assignee"))); PageData assignedAlarms = alarmService.findAlarmDataByQueryForEntities(tenantId, toQuery(pageLink), Collections.singletonList(created.getOriginator())); Assert.assertNotNull(assignedAlarms.getData());