diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyOrderColumnTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyOrderColumnTest.java index 2a0e514ca201..42c09e34fec9 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyOrderColumnTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/mapping/UnidirectionalOneToManyOrderColumnTest.java @@ -180,6 +180,59 @@ public void testRemovingOneAndAddingTwoElements(EntityManagerFactoryScope scope) ); } + @Test + public void testSwapElementsAtZeroAndOne(EntityManagerFactoryScope scope) { + long parentId = scope.fromTransaction( + entityManager -> { + ParentData parent = new ParentData(); + entityManager.persist( parent ); + + String[] childrenStr = new String[] {"One", "Two"}; + for ( String str : childrenStr ) { + ChildData child = new ChildData( str ); + entityManager.persist( child ); + parent.getChildren().add( child ); + } + + entityManager.flush(); + + List<ChildData> children = parent.getChildren(); + ChildData child0 = children.get( 0 ); + ChildData child1 = children.get( 1 ); + children.set(0, child1); + children.set(1, child0); + + return parent.id; + } + ); + // if the above works, then test on {"Two", "One"} + } + + @Test + public void testAddAtZeroDeleteAtTwo(EntityManagerFactoryScope scope) { + long parentId = scope.fromTransaction( + entityManager -> { + ParentData parent = new ParentData(); + entityManager.persist( parent ); + + String[] childrenStr = new String[] {"One", "Two"}; + for ( String str : childrenStr ) { + ChildData child = new ChildData( str ); + entityManager.persist( child ); + parent.getChildren().add( child ); + } + + entityManager.flush(); + + List<ChildData> children = parent.getChildren(); + children.add( 0, new ChildData( "Zero" ) ); + children.remove( 2 ); + return parent.id; + } + ); + // if the above works, then test on {"Zero", "One"} + } + @Entity(name = "ParentData") @Table(name = "PARENT") public static class ParentData {