|
1 | 1 | /* |
2 | | - * Hibernate, Relational Persistence for Idiomatic Java |
3 | | - * |
4 | | - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. |
5 | | - * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. |
| 2 | + * SPDX-License-Identifier: Apache-2.0 |
| 3 | + * Copyright Red Hat Inc. and Hibernate Authors |
6 | 4 | */ |
7 | 5 | package org.hibernate.orm.test.function.array; |
8 | 6 |
|
| 7 | +import java.util.Arrays; |
9 | 8 | import java.util.List; |
10 | 9 |
|
11 | 10 | import org.hibernate.boot.ResourceStreamLocator; |
|
14 | 13 | import org.hibernate.boot.spi.InFlightMetadataCollector; |
15 | 14 | import org.hibernate.boot.spi.MetadataBuildingContext; |
16 | 15 | import org.hibernate.dialect.OracleArrayJdbcType; |
| 16 | +import org.hibernate.dialect.PostgreSQLDialect; |
17 | 17 | import org.hibernate.dialect.OracleDialect; |
18 | 18 | import org.hibernate.dialect.SpannerDialect; |
19 | 19 | import org.hibernate.engine.jdbc.Size; |
20 | 20 | import org.hibernate.query.criteria.JpaCriteriaQuery; |
21 | 21 | import org.hibernate.query.criteria.JpaRoot; |
22 | 22 | import org.hibernate.query.sqm.NodeBuilder; |
| 23 | +import org.hibernate.testing.orm.junit.RequiresDialect; |
23 | 24 | import org.hibernate.type.SqlTypes; |
24 | 25 | import org.hibernate.type.descriptor.java.ArrayJavaType; |
25 | 26 | import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry; |
|
37 | 38 | import org.hibernate.testing.orm.junit.SessionFactory; |
38 | 39 | import org.hibernate.testing.orm.junit.SessionFactoryScope; |
39 | 40 | import org.hibernate.testing.orm.junit.SkipForDialect; |
| 41 | +import org.hibernate.testing.orm.junit.Jira; |
40 | 42 | import org.junit.jupiter.api.AfterEach; |
41 | 43 | import org.junit.jupiter.api.BeforeEach; |
42 | 44 | import org.junit.jupiter.api.Test; |
@@ -172,4 +174,21 @@ public void testNonExistingArrayType(SessionFactoryScope scope) { |
172 | 174 | } ); |
173 | 175 | } |
174 | 176 |
|
| 177 | + @Test |
| 178 | + @Jira("https://hibernate.atlassian.net/browse/HHH-19681") |
| 179 | + @RequiresDialect(PostgreSQLDialect.class) |
| 180 | + public void testJsonBJdbcArray(SessionFactoryScope scope) { |
| 181 | + scope.inTransaction( session -> { |
| 182 | + String sql = "select groupId, array_agg(json_values) " + |
| 183 | + "from (VALUES (1,'[1,2]'::jsonb),(1,'[10,20]'::jsonb)) as row(groupId,json_values) " + |
| 184 | + "group by groupId"; |
| 185 | + |
| 186 | + List<Object[]> result = session.createNativeQuery(sql, Object[].class).getResultList(); |
| 187 | + assertEquals(1,result.size()); |
| 188 | + assertEquals(2, result.get(0).length); |
| 189 | + assertEquals( 1,result.get(0)[0] ); |
| 190 | + assertEquals( "[[1, 2], [10, 20]]", Arrays.toString((String[])result.get(0)[1]) ); |
| 191 | + } ); |
| 192 | + } |
| 193 | + |
175 | 194 | } |
0 commit comments