1 package com.vladmihalcea.hibernate.type.array;
2
3 import com.vladmihalcea.hibernate.type.array.internal.AbstractArrayType;
4 import com.vladmihalcea.hibernate.type.array.internal.IntArrayTypeDescriptor;
5 import com.vladmihalcea.hibernate.type.util.Configuration;
6 import com.vladmihalcea.hibernate.type.util.ParameterizedParameterType;
7 import org.hibernate.usertype.DynamicParameterizedType;
8
9 import java.util.Properties;
10
11 /**
12  * Maps an {@code int[]} array on a PostgreSQL ARRAY type. Multidimensional arrays are supported as well, as explained in <a href="https://vladmihalcea.com/multidimensional-array-jpa-hibernate/">this article</a>.
13  * <p>
14  * For more details about how to use it, check out <a href="https://vladmihalcea.com/how-to-map-java-and-sql-arrays-with-jpa-and-hibernate/">this article</a> on <a href="https://vladmihalcea.com/">vladmihalcea.com</a>.
15  *
16  * @author Vlad Mihalcea
17  */

18 public class IntArrayType extends AbstractArrayType<int[]> {
19
20     public static final IntArrayType INSTANCE = new IntArrayType();
21
22     public IntArrayType() {
23         super(
24             new IntArrayTypeDescriptor()
25         );
26     }
27
28     public IntArrayType(Configuration configuration) {
29         super(
30             new IntArrayTypeDescriptor(), configuration
31         );
32     }
33
34     public IntArrayType(Class arrayClass) {
35         this();
36         Properties parameters = new Properties();
37         parameters.put(DynamicParameterizedType.PARAMETER_TYPE, new ParameterizedParameterType(arrayClass));
38         setParameterValues(parameters);
39     }
40
41     public String getName() {
42         return "int-array";
43     }
44 }