Skip to content

Commit 3d35dbf

Browse files
cigalygavinking
authored andcommitted
HHH-18958 Test case - named query with resultClass annotation
1 parent 050089e commit 3d35dbf

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.processor.test.resultclass;
6+
7+
public record NameValue(String name, Integer value) {
8+
9+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.processor.test.resultclass;
6+
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.Id;
9+
import jakarta.persistence.NamedQuery;
10+
11+
@Entity
12+
@NamedQuery(name = "#getNameValue", query = "select p.name, p.value from Post p", resultClass = NameValue.class)
13+
public class Post {
14+
@Id
15+
Integer id;
16+
17+
String name;
18+
19+
Integer value;
20+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.processor.test.resultclass;
6+
7+
import jakarta.persistence.EntityManager;
8+
import org.assertj.core.api.Assertions;
9+
import org.hibernate.processor.test.util.CompilationTest;
10+
import org.hibernate.processor.test.util.WithClasses;
11+
import org.junit.Test;
12+
13+
import java.lang.reflect.Method;
14+
import java.lang.reflect.ParameterizedType;
15+
import java.util.List;
16+
17+
import static org.hibernate.processor.test.util.TestUtil.assertMetamodelClassGeneratedFor;
18+
import static org.hibernate.processor.test.util.TestUtil.assertPresenceOfMethodInMetamodelFor;
19+
import static org.hibernate.processor.test.util.TestUtil.getMetaModelSourceAsString;
20+
import static org.hibernate.processor.test.util.TestUtil.getMethodFromMetamodelFor;
21+
import static org.junit.jupiter.api.Assertions.assertEquals;
22+
23+
public class ResultClassTest extends CompilationTest {
24+
@Test
25+
@WithClasses({Post.class, NameValue.class})
26+
public void test() {
27+
System.out.println( getMetaModelSourceAsString( Post.class ) );
28+
assertMetamodelClassGeneratedFor( Post.class );
29+
30+
assertPresenceOfMethodInMetamodelFor( Post.class, "getNameValue", EntityManager.class );
31+
final Method method = getMethodFromMetamodelFor( Post.class, "getNameValue", EntityManager.class );
32+
if ( method.getGenericReturnType() instanceof ParameterizedType parameterized ) {
33+
assertEquals( List.class, parameterized.getRawType() );
34+
assertEquals( NameValue.class, parameterized.getActualTypeArguments()[0] );
35+
}
36+
else {
37+
Assertions.fail();
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)