From f320de5583154a5395b2a957d3ea5e849baafce2 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 20 Aug 2022 15:15:42 +0200
Subject: [PATCH] #400 - oder transactions with same date by id (equals
 creation order)

---
 .../transactions/TransactionSpecifications.java    |  2 +-
 .../unit/TransactionSpecificationsTest.java        | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java
index a1bf41eb9..28a4f313b 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java
@@ -122,7 +122,7 @@ public class TransactionSpecifications
 				transferPredicates.add(nameLike);
 			}
 
-			query.orderBy(builder.desc(transaction.get(Transaction_.date)), builder.asc(transaction.get(Transaction_.name)));
+			query.orderBy(builder.desc(transaction.get(Transaction_.date)), builder.desc(transaction.get(Transaction_.ID)));
 
 			final Predicate predicatesCombined = combinePredicates(predicates, builder);
 			Predicate generalPredicates = builder.and(dateConstraint, predicatesCombined);
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java
index e3eeaf724..b3422d40d 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java
@@ -474,4 +474,18 @@ class TransactionSpecificationsTest
 				.contains(transferTransaction)
 				.contains(transferTransactionWrongAccount);
 	}
+
+	@Test
+	void checkOrder()
+	{
+		Specification spec = TransactionSpecifications.withDynamicQuery(startDate, LocalDate.now(), account, true, true, true, null, List.of(), List.of(), null);
+
+		List<Transaction> results = transactionRepository.findAll(spec);
+		assertThat(results).hasSize(5)
+				.containsExactly(transaction3,
+						transaction2,
+						transferTransaction,
+						transaction1,
+						repeatingTransaction);
+	}
 }
\ No newline at end of file
-- 
GitLab