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