diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/EntityResultTests.java b/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/EntityResultTests.java index 23e0707788..0a19c1622e 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/EntityResultTests.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/EntityResultTests.java @@ -17,6 +17,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import jakarta.persistence.LockModeType; import org.hibernate.cfg.AvailableSettings; import org.hibernate.query.named.NamedResultSetMappingMemento; @@ -119,6 +120,29 @@ public class EntityResultTests extends AbstractUsageTest { ); } + @Test + public void testImplicitAttributeMappingWithLockMode(SessionFactoryScope scope) { + scope.inTransaction( + session -> { + // make sure it is in the repository + final NamedResultSetMappingMemento mappingMemento = session.getSessionFactory() + .getQueryEngine() + .getNamedObjectRepository() + .getResultSetMappingMemento( + "entity-lockmode" ); + assertThat( mappingMemento, notNullValue() ); + + // apply it to a native-query + final String qryString = "select id, name, notes from SimpleEntityWithNamedMappings for update"; + final List results = session + .createNativeQuery( qryString, "entity-lockmode" ) + .list(); + assertThat( results.size(), is( 1 ) ); + assertThat( session.getLockMode(results.get(0)), is(LockModeType.PESSIMISTIC_WRITE)); + } + ); + } + @Test public void testMixedAttributeMapping(SessionFactoryScope scope) { scope.inTransaction( diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/SimpleEntityWithNamedMappings.java b/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/SimpleEntityWithNamedMappings.java index f1f7f5c157..126004068f 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/SimpleEntityWithNamedMappings.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/SimpleEntityWithNamedMappings.java @@ -14,6 +14,7 @@ import jakarta.persistence.EntityResult; import jakarta.persistence.FetchType; import jakarta.persistence.FieldResult; import jakarta.persistence.Id; +import jakarta.persistence.LockModeType; import jakarta.persistence.SqlResultSetMapping; /** @@ -57,6 +58,13 @@ import jakarta.persistence.SqlResultSetMapping; entityClass = SimpleEntityWithNamedMappings.class ) ) +@SqlResultSetMapping( + name = "entity-lockmode", + entities = @EntityResult( + entityClass = SimpleEntityWithNamedMappings.class, + lockMode = LockModeType.PESSIMISTIC_WRITE + ) +) @SqlResultSetMapping( name = "entity-id-notes", entities = @EntityResult(