Skip to content

Commit e9834f4

Browse files
koentsjedreab8
authored andcommitted
HHH-10405: <return> elements of <sql-query> are not handled properly when building metadata - Unit test demonstrating the issue
1 parent 3fb9577 commit e9834f4

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package org.hibernate.test.hbm.query;
2+
3+
import java.io.StringReader;
4+
5+
import org.hibernate.boot.Metadata;
6+
import org.hibernate.boot.MetadataSources;
7+
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
8+
import org.hibernate.engine.jdbc.ReaderInputStream;
9+
import org.hibernate.engine.query.spi.sql.NativeSQLQueryReturn;
10+
import org.hibernate.engine.query.spi.sql.NativeSQLQueryRootReturn;
11+
import org.hibernate.engine.spi.NamedSQLQueryDefinition;
12+
import org.hibernate.testing.TestForIssue;
13+
import org.hibernate.testing.junit4.BaseUnitTestCase;
14+
import org.junit.Assert;
15+
import org.junit.Test;
16+
17+
18+
/**
19+
* @author Koen Aers
20+
*/
21+
@TestForIssue( jiraKey = "HHH-10405" )
22+
public class QueryReturnTest extends BaseUnitTestCase {
23+
24+
private static String QUERY_RETURN_HBM_XML =
25+
"<hibernate-mapping package='org.hibernate.test.hbm.query'> "+
26+
" <class name='QueryReturnTest$Bar'> "+
27+
" <id name='id'> "+
28+
" <generator class='sequence'/> "+
29+
" </id> "+
30+
" <property name='foo' type='string'/> "+
31+
" </class> "+
32+
" <sql-query name='myQuery'> "+
33+
" <synchronize table='myTable'/> "+
34+
" <return "+
35+
" alias='e' "+
36+
" class='org.hibernate.test.hbm.query.QueryReturnTest$Bar'"+
37+
" /> "+
38+
" <![CDATA[from elephant as {e} where {e.age} > 50]]> "+
39+
" </sql-query> "+
40+
"</hibernate-mapping> ";
41+
42+
@Test
43+
public void testQueryReturn() {
44+
StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder()
45+
.applySetting("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
46+
MetadataSources metadataSources = new MetadataSources(serviceRegistryBuilder.build());
47+
metadataSources.addInputStream(new ReaderInputStream(new StringReader(QUERY_RETURN_HBM_XML)));
48+
Metadata metadata = metadataSources.buildMetadata();
49+
NamedSQLQueryDefinition myQuery = metadata.getNamedNativeQueryDefinition("myQuery");
50+
Assert.assertNotNull(myQuery);
51+
NativeSQLQueryReturn[] myQueryReturns = myQuery.getQueryReturns();
52+
Assert.assertNotNull(myQueryReturns);
53+
Assert.assertEquals(1, myQueryReturns.length);
54+
Assert.assertTrue(NativeSQLQueryRootReturn.class.isInstance(myQueryReturns[0]));
55+
NativeSQLQueryRootReturn myQueryRootReturn = (NativeSQLQueryRootReturn)myQueryReturns[0];
56+
Assert.assertEquals("e", myQueryRootReturn.getAlias());
57+
Assert.assertEquals("org.hibernate.test.hbm.query.QueryReturnTest$Bar", myQueryRootReturn.getReturnEntityName());
58+
}
59+
60+
public class Bar {
61+
public Integer id;
62+
public String foo;
63+
}
64+
65+
}

0 commit comments

Comments
 (0)