Skip to content

Commit 4d327f8

Browse files
committed
HHH-18629 Add tests for issue
1 parent bcac1e3 commit 4d327f8

File tree

1 file changed

+50
-3
lines changed

1 file changed

+50
-3
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/query/sql/NativeQueryResultBuilderTests.java

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.hibernate.metamodel.mapping.EntityMappingType;
1919
import org.hibernate.metamodel.mapping.ModelPart;
2020
import org.hibernate.metamodel.mapping.internal.BasicAttributeMapping;
21+
import org.hibernate.testing.orm.domain.gambit.BasicEntity;
2122
import org.hibernate.type.descriptor.converter.spi.BasicValueConverter;
2223
import org.hibernate.type.descriptor.converter.spi.JpaAttributeConverter;
2324
import org.hibernate.query.sql.spi.NativeQueryImplementor;
@@ -26,6 +27,7 @@
2627
import org.hibernate.testing.orm.domain.StandardDomainModel;
2728
import org.hibernate.testing.orm.domain.gambit.EntityOfBasics;
2829
import org.hibernate.testing.orm.junit.DomainModel;
30+
import org.hibernate.testing.orm.junit.JiraKey;
2931
import org.hibernate.testing.orm.junit.SessionFactory;
3032
import org.hibernate.testing.orm.junit.SessionFactoryScope;
3133
import org.junit.jupiter.api.AfterEach;
@@ -277,6 +279,45 @@ public void testConvertedAttributeBasedBuilder(SessionFactoryScope scope) {
277279
);
278280
}
279281

282+
@Test
283+
@JiraKey("HHH-18629")
284+
public void testNativeQueryWithResultClass(SessionFactoryScope scope) {
285+
scope.inTransaction(
286+
session -> {
287+
final String sql = "select data, id from BasicEntity";
288+
final NativeQueryImplementor<?> query = session.createNativeQuery( sql, BasicEntity.class );
289+
290+
final List<?> results = query.list();
291+
assertThat( results.size(), is( 1 ) );
292+
293+
final BasicEntity result = (BasicEntity) results.get( 0 );
294+
295+
assertThat( result.getData(), is( STRING_VALUE ) );
296+
assertThat( result.getId(), is( 1 ) );
297+
}
298+
);
299+
}
300+
301+
@Test
302+
@JiraKey("HHH-18629")
303+
public void testNativeQueryWithResultClassAndPlaceholders(SessionFactoryScope scope) {
304+
scope.inTransaction(
305+
session -> {
306+
final String sql = "select {be.*} from BasicEntity be";
307+
final NativeQueryImplementor<?> query = session.createNativeQuery( sql, BasicEntity.class );
308+
query.addEntity( "be", BasicEntity.class );
309+
310+
final List<?> results = query.list();
311+
assertThat( results.size(), is( 1 ) );
312+
313+
final BasicEntity result = (BasicEntity) results.get( 0 );
314+
315+
assertThat( result.getData(), is( STRING_VALUE ) );
316+
assertThat( result.getId(), is( 1 ) );
317+
}
318+
);
319+
}
320+
280321
@BeforeAll
281322
public void verifyModel(SessionFactoryScope scope) {
282323
final EntityMappingType entityDescriptor = scope.getSessionFactory()
@@ -315,21 +356,27 @@ public void prepareData(SessionFactoryScope scope) throws MalformedURLException
315356
entityOfBasics.setTheInstant( Instant.EPOCH );
316357

317358
session.persist( entityOfBasics );
359+
360+
session.persist( new BasicEntity( 1, STRING_VALUE ) );
318361
}
319362
);
320363

321364
scope.inTransaction(
322365
session -> {
323-
final EntityOfBasics entity = session.get( EntityOfBasics.class, 1 );
324-
assertThat( entity, notNullValue() );
366+
assertThat( session.get( EntityOfBasics.class, 1 ), notNullValue() );
367+
368+
assertThat( session.get( BasicEntity.class, 1 ), notNullValue() );
325369
}
326370
);
327371
}
328372

329373
@AfterEach
330374
public void cleanUpData(SessionFactoryScope scope) {
331375
scope.inTransaction(
332-
session -> session.createQuery( "delete EntityOfBasics" ).executeUpdate()
376+
session -> {
377+
session.createQuery( "delete EntityOfBasics" ).executeUpdate();
378+
session.createQuery( "delete BasicEntity" ).executeUpdate();
379+
}
333380
);
334381
}
335382

0 commit comments

Comments
 (0)