|
4 | 4 | */
|
5 | 5 | package org.hibernate.orm.test.hql;
|
6 | 6 |
|
7 |
| -import java.util.List; |
8 |
| - |
9 | 7 | import org.hibernate.testing.orm.domain.gambit.EntityOfBasics;
|
10 | 8 | import org.hibernate.testing.orm.junit.DomainModel;
|
11 | 9 | import org.hibernate.testing.orm.junit.Jira;
|
|
14 | 12 | import org.junit.jupiter.api.BeforeAll;
|
15 | 13 | import org.junit.jupiter.api.Test;
|
16 | 14 |
|
| 15 | +import java.util.List; |
| 16 | + |
17 | 17 | import static org.assertj.core.api.Assertions.assertThat;
|
18 | 18 |
|
19 | 19 | @DomainModel(annotatedClasses = {
|
|
22 | 22 | })
|
23 | 23 | @SessionFactory
|
24 | 24 | @Jira("https://hibernate.atlassian.net/browse/HHH-16861")
|
| 25 | +@Jira("https://hibernate.atlassian.net/browse/HHH-18708") |
25 | 26 | public class EnumTest {
|
26 | 27 |
|
27 | 28 |
|
@@ -97,4 +98,56 @@ public void testOrdinalFunctionOnStringEnum(SessionFactoryScope scope) {
|
97 | 98 |
|
98 | 99 | }
|
99 | 100 |
|
| 101 | + @Test |
| 102 | + public void testStringFunctionOnStringEnum(SessionFactoryScope scope) { |
| 103 | + scope.inTransaction( session -> { |
| 104 | + |
| 105 | + List<String> femaleStringFunction = session.createQuery( |
| 106 | + "select string(gender) " + |
| 107 | + "from EntityOfBasics e " + |
| 108 | + "where e.gender = :gender", |
| 109 | + String.class |
| 110 | + ) |
| 111 | + .setParameter( "gender", EntityOfBasics.Gender.FEMALE ) |
| 112 | + .getResultList(); |
| 113 | + |
| 114 | + List<String> femaleWithCast = session.createQuery( |
| 115 | + "select cast(e.gender as String) " + |
| 116 | + "from EntityOfBasics e " + |
| 117 | + "where e.gender = :gender", |
| 118 | + String.class |
| 119 | + ) |
| 120 | + .setParameter( "gender", EntityOfBasics.Gender.FEMALE ) |
| 121 | + .getResultList(); |
| 122 | + |
| 123 | + assertThat( femaleStringFunction ).hasSize( 1 ); |
| 124 | + assertThat( femaleStringFunction ).hasSameElementsAs( femaleWithCast ); |
| 125 | + } ); |
| 126 | + |
| 127 | + } |
| 128 | + |
| 129 | + @Test |
| 130 | + public void testStringFunctionOnOrdinalEnum(SessionFactoryScope scope) { |
| 131 | + scope.inTransaction( session -> { |
| 132 | + //tag::hql-string-function-example[] |
| 133 | + // enum Gender { |
| 134 | + // MALE, |
| 135 | + // FEMALE, |
| 136 | + // OTHER |
| 137 | + //} |
| 138 | + List<String> femaleStringFromString = session.createQuery( |
| 139 | + "select string(ordinalGender)" + |
| 140 | + "from EntityOfBasics e " + |
| 141 | + "where e.ordinalGender = :gender", |
| 142 | + String.class ) |
| 143 | + .setParameter( "gender", EntityOfBasics.Gender.FEMALE ) |
| 144 | + .getResultList(); |
| 145 | + // This will return List.of(1) |
| 146 | + //end::hql-string-function-example[] |
| 147 | + assertThat( femaleStringFromString ).hasSize( 1 ); |
| 148 | + assertThat( femaleStringFromString ).hasSameElementsAs( List.of( "FEMALE" ) ); |
| 149 | + } ); |
| 150 | + |
| 151 | + } |
| 152 | + |
100 | 153 | }
|
0 commit comments