|
18 | 18 | import org.hibernate.metamodel.mapping.EntityMappingType; |
19 | 19 | import org.hibernate.metamodel.mapping.ModelPart; |
20 | 20 | import org.hibernate.metamodel.mapping.internal.BasicAttributeMapping; |
| 21 | +import org.hibernate.testing.orm.domain.gambit.BasicEntity; |
21 | 22 | import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; |
22 | 23 | import org.hibernate.type.descriptor.converter.spi.JpaAttributeConverter; |
23 | 24 | import org.hibernate.query.sql.spi.NativeQueryImplementor; |
|
26 | 27 | import org.hibernate.testing.orm.domain.StandardDomainModel; |
27 | 28 | import org.hibernate.testing.orm.domain.gambit.EntityOfBasics; |
28 | 29 | import org.hibernate.testing.orm.junit.DomainModel; |
| 30 | +import org.hibernate.testing.orm.junit.JiraKey; |
29 | 31 | import org.hibernate.testing.orm.junit.SessionFactory; |
30 | 32 | import org.hibernate.testing.orm.junit.SessionFactoryScope; |
31 | 33 | import org.junit.jupiter.api.AfterEach; |
@@ -277,6 +279,45 @@ public void testConvertedAttributeBasedBuilder(SessionFactoryScope scope) { |
277 | 279 | ); |
278 | 280 | } |
279 | 281 |
|
| 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 | + |
280 | 321 | @BeforeAll |
281 | 322 | public void verifyModel(SessionFactoryScope scope) { |
282 | 323 | final EntityMappingType entityDescriptor = scope.getSessionFactory() |
@@ -315,21 +356,27 @@ public void prepareData(SessionFactoryScope scope) throws MalformedURLException |
315 | 356 | entityOfBasics.setTheInstant( Instant.EPOCH ); |
316 | 357 |
|
317 | 358 | session.persist( entityOfBasics ); |
| 359 | + |
| 360 | + session.persist( new BasicEntity( 1, STRING_VALUE ) ); |
318 | 361 | } |
319 | 362 | ); |
320 | 363 |
|
321 | 364 | scope.inTransaction( |
322 | 365 | 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() ); |
325 | 369 | } |
326 | 370 | ); |
327 | 371 | } |
328 | 372 |
|
329 | 373 | @AfterEach |
330 | 374 | public void cleanUpData(SessionFactoryScope scope) { |
331 | 375 | scope.inTransaction( |
332 | | - session -> session.createQuery( "delete EntityOfBasics" ).executeUpdate() |
| 376 | + session -> { |
| 377 | + session.createQuery( "delete EntityOfBasics" ).executeUpdate(); |
| 378 | + session.createQuery( "delete BasicEntity" ).executeUpdate(); |
| 379 | + } |
333 | 380 | ); |
334 | 381 | } |
335 | 382 |
|
|
0 commit comments