Skip to content

Commit 61c66f1

Browse files
henrikdeluxebrmeyer
authored andcommitted
HHH-8850 - fixed ex. when calling addScalar to NamedSQLQuery
changed list instanciation from java.util.Arrays.ArrayList to java.util.ArrayList when creating SQLQueryImpl from an NamedSQLQueryDefinition. added testcase
1 parent 7c69c7f commit 61c66f1

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

hibernate-core/src/main/java/org/hibernate/internal/SQLQueryImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ public class SQLQueryImpl extends AbstractQueryImpl implements SQLQuery {
8989
queryDef.getResultSetRef()
9090
);
9191
}
92-
this.queryReturns = Arrays.asList( definition.getQueryReturns() );
92+
this.queryReturns = new ArrayList<NativeSQLQueryReturn>(Arrays.asList( definition.getQueryReturns() ));
9393
}
9494
else if ( queryDef.getQueryReturns() != null && queryDef.getQueryReturns().length > 0 ) {
95-
this.queryReturns = Arrays.asList( queryDef.getQueryReturns() );
95+
this.queryReturns = new ArrayList<NativeSQLQueryReturn>(Arrays.asList( queryDef.getQueryReturns()));
9696
}
9797
else {
9898
this.queryReturns = new ArrayList<NativeSQLQueryReturn>();

hibernate-core/src/test/java/org/hibernate/test/sql/hand/query/NativeSQLQueriesTest.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.Map;
1010

1111
import org.junit.Test;
12-
1312
import org.hibernate.Hibernate;
1413
import org.hibernate.HibernateException;
1514
import org.hibernate.Query;
@@ -22,6 +21,8 @@
2221
import org.hibernate.dialect.H2Dialect;
2322
import org.hibernate.dialect.AbstractHANADialect;
2423
import org.hibernate.dialect.MySQL5Dialect;
24+
import org.hibernate.engine.query.spi.sql.NativeSQLQueryReturn;
25+
import org.hibernate.engine.spi.NamedSQLQueryDefinitionBuilder;
2526
import org.hibernate.internal.util.collections.ArrayHelper;
2627
import org.hibernate.test.sql.hand.Dimension;
2728
import org.hibernate.test.sql.hand.Employment;
@@ -141,6 +142,28 @@ public void testFailOnNoAddEntityOrScalar() {
141142
s.close();
142143
}
143144
}
145+
146+
@Test
147+
public void testRegisteredNamedSQLQueryWithScalar()
148+
{
149+
final NamedSQLQueryDefinitionBuilder builder = new NamedSQLQueryDefinitionBuilder();
150+
builder.setName("namedQuery");
151+
builder.setQuery("select count(*) AS count from organization");
152+
builder.setQueryReturns(new NativeSQLQueryReturn[1]);
153+
154+
sessionFactory().registerNamedSQLQueryDefinition("namedQuery", builder.createNamedQueryDefinition());
155+
156+
final Session s = openSession();
157+
s.beginTransaction();
158+
final SQLQuery query = (SQLQuery) s.getNamedQuery("namedQuery");
159+
query.addScalar("count");
160+
final Object result = query.uniqueResult();
161+
s.getTransaction().commit();
162+
s.close();
163+
164+
assertNotNull(result);
165+
assertEquals(BigInteger.valueOf(0), result);
166+
}
144167

145168
@Test
146169
public void testManualSynchronization() {

0 commit comments

Comments
 (0)