Skip to content

Commit e11ac26

Browse files
gavinkingsebersole
authored andcommitted
test for @EntityResult(lockMode)
Signed-off-by: Gavin King <[email protected]>
1 parent 27042f5 commit e11ac26

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/EntityResultTests.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.List;
1818
import java.util.Set;
1919

20+
import jakarta.persistence.LockModeType;
2021
import org.hibernate.cfg.AvailableSettings;
2122
import org.hibernate.query.named.NamedResultSetMappingMemento;
2223

@@ -119,6 +120,29 @@ public void testImplicitAttributeMapping(SessionFactoryScope scope) {
119120
);
120121
}
121122

123+
@Test
124+
public void testImplicitAttributeMappingWithLockMode(SessionFactoryScope scope) {
125+
scope.inTransaction(
126+
session -> {
127+
// make sure it is in the repository
128+
final NamedResultSetMappingMemento mappingMemento = session.getSessionFactory()
129+
.getQueryEngine()
130+
.getNamedObjectRepository()
131+
.getResultSetMappingMemento(
132+
"entity-lockmode" );
133+
assertThat( mappingMemento, notNullValue() );
134+
135+
// apply it to a native-query
136+
final String qryString = "select id, name, notes from SimpleEntityWithNamedMappings for update";
137+
final List<SimpleEntityWithNamedMappings> results = session
138+
.createNativeQuery( qryString, "entity-lockmode" )
139+
.list();
140+
assertThat( results.size(), is( 1 ) );
141+
assertThat( session.getLockMode(results.get(0)), is(LockModeType.PESSIMISTIC_WRITE));
142+
}
143+
);
144+
}
145+
122146
@Test
123147
public void testMixedAttributeMapping(SessionFactoryScope scope) {
124148
scope.inTransaction(

hibernate-core/src/test/java/org/hibernate/orm/test/query/resultmapping/SimpleEntityWithNamedMappings.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import jakarta.persistence.FetchType;
1515
import jakarta.persistence.FieldResult;
1616
import jakarta.persistence.Id;
17+
import jakarta.persistence.LockModeType;
1718
import jakarta.persistence.SqlResultSetMapping;
1819

1920
/**
@@ -57,6 +58,13 @@
5758
entityClass = SimpleEntityWithNamedMappings.class
5859
)
5960
)
61+
@SqlResultSetMapping(
62+
name = "entity-lockmode",
63+
entities = @EntityResult(
64+
entityClass = SimpleEntityWithNamedMappings.class,
65+
lockMode = LockModeType.PESSIMISTIC_WRITE
66+
)
67+
)
6068
@SqlResultSetMapping(
6169
name = "entity-id-notes",
6270
entities = @EntityResult(

0 commit comments

Comments
 (0)