99import  org .hibernate .engine .spi .SessionFactoryImplementor ;
1010import  org .hibernate .query .results .ResultSetMapping ;
1111import  org .hibernate .query .results .ResultSetMappingImpl ;
12+ import  org .hibernate .sql .ast .spi .SqlSelection ;
13+ import  org .hibernate .sql .ast .tree .select .QueryGroup ;
14+ import  org .hibernate .sql .ast .tree .select .QueryPart ;
1215import  org .hibernate .sql .ast .tree .select .SelectStatement ;
1316import  org .hibernate .sql .results .jdbc .spi .JdbcValuesMappingProducer ;
1417import  org .hibernate .sql .results .jdbc .spi .JdbcValuesMappingProducerProvider ;
18+ import  org .hibernate .type .descriptor .jdbc .NullJdbcType ;
19+ 
20+ import  java .util .List ;
1521
1622/** 
1723 * Standard JdbcValuesMappingProducerProvider implementation 
@@ -28,10 +34,20 @@ public class JdbcValuesMappingProducerProviderStandard implements JdbcValuesMapp
2834	public  JdbcValuesMappingProducer  buildMappingProducer (
2935			SelectStatement  sqlAst ,
3036			SessionFactoryImplementor  sessionFactory ) {
31- 		return  new  JdbcValuesMappingProducerStandard (
32- 				sqlAst .getQuerySpec ().getSelectClause ().getSqlSelections (),
33- 				sqlAst .getDomainResultDescriptors ()
34- 		);
37+ 		return  new  JdbcValuesMappingProducerStandard ( getSelections ( sqlAst  ), sqlAst .getDomainResultDescriptors () );
38+ 	}
39+ 
40+ 	private  static  List <SqlSelection > getSelections (SelectStatement  selectStatement ) {
41+ 		if  ( selectStatement .getQueryPart () instanceof  QueryGroup  ) {
42+ 			final  QueryGroup  queryGroup  = (QueryGroup ) selectStatement .getQueryPart ();
43+ 			for  ( QueryPart  queryPart  : queryGroup .getQueryParts () ) {
44+ 				if  ( !(queryPart .getFirstQuerySpec ().getSelectClause ().getSqlSelections ()
45+ 						.get ( 0  ).getExpressionType ().getSingleJdbcMapping ().getJdbcType () instanceof  NullJdbcType ) ) {
46+ 					return  queryPart .getFirstQuerySpec ().getSelectClause ().getSqlSelections ();
47+ 				}
48+ 			}
49+ 		}
50+ 		return  selectStatement .getQuerySpec ().getSelectClause ().getSqlSelections ();
3551	}
3652
3753	@ Override 
0 commit comments