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.LongArrayTypeDescriptor;
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 long[]} 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
15  * article</a> on <a href="https://vladmihalcea.com/">vladmihalcea.com</a>.
16  *
17  * @author Vlad Mihalcea
18  */

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