@Test
@TestForIssue(jiraKey = "OGM-1375")
public void nativeQueryProjectionSubsequentQuery() {
final String nativeQuery1 = "db.WILDE_POEM.find({ 'name' : 'Portia' }, { 'author' : 1, 'rating' : 1 } )";
final String nativeQuery2 = "db.WILDE_POEM.find({ 'name' : 'Portia' }, { 'copiesSold' : 1, 'rating' : 1 } )";
inTransaction( session -> {
Query query = session.createNativeQuery( nativeQuery1 ).addEntity( OscarWildePoem.class );
OscarWildePoem result = (OscarWildePoem) query.uniqueResult();
assertThat( result.getId() ).isEqualTo( new Long( 1l ) );
assertThat( result.getName() ).isNull();
assertThat( result.getAuthor() ).isEqualTo( portia.getAuthor() );
assertThat( result.getRating() ).isEqualTo( portia.getRating() );
assertThat( result.getCopiesSold() ).isNull();
session.createNativeQuery( nativeQuery2 ).addEntity( OscarWildePoem.class );
result = (OscarWildePoem) query.uniqueResult();
assertThat( result.getId() ).isEqualTo( new Long( 1l ) );
assertThat( result.getName() ).isNull();
assertThat( result.getAuthor() ).isEqualTo( portia.getAuthor() );
assertThat( result.getRating() ).isEqualTo( portia.getRating() );
assertThat( result.getCopiesSold() ).isEqualTo( portia.getCopiesSold() );
} );
}