You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2023/02/09 11:27:57 UTC

[cayenne] 03/05: CAY-2792 Fix Insertion Order For Reflexive DataObjects

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit d200025c02cc7bf97b638d81a4cca1dd6300fa37
Author: Matt Watson <ma...@swarmbox.com>
AuthorDate: Tue Feb 7 08:22:36 2023 -0800

    CAY-2792 Fix Insertion Order For Reflexive DataObjects
---
 .../apache/cayenne/access/flush/operation/DefaultDbRowOpSorter.java  | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DefaultDbRowOpSorter.java b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DefaultDbRowOpSorter.java
index 1ad604c54..ed431719e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DefaultDbRowOpSorter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DefaultDbRowOpSorter.java
@@ -61,14 +61,15 @@ public class DefaultDbRowOpSorter implements DbRowOpSorter {
         int start = 0;
         int idx = 0;
         DbRowOp lastRow = null;
-        for(DbRowOp row : sortedDbRows) {
+        for (int i = 0; i < sortedDbRows.size(); i++) {
+            DbRowOp row = sortedDbRows.get(i);
             if (row.getEntity() != lastEntity) {
-                start = idx;
                 if(lastEntity != null && sorter.isReflexive(lastEntity)) {
                     ObjEntity objEntity = resolver.getObjEntity(lastRow.getObject().getObjectId().getEntityName());
                     List<DbRowOp> reflexiveSublist = sortedDbRows.subList(start, idx);
                     sorter.sortObjectsForEntity(objEntity, reflexiveSublist, lastRow instanceof DeleteDbRowOp);
                 }
+                start = idx;
                 lastEntity = row.getEntity();
             }
             lastRow = row;