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.DoubleArrayTypeDescriptor;
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 a {@code double[]} 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=
15  * "https://vladmihalcea.com/how-to-map-java-and-sql-arrays-with-jpa-and-hibernate/">this
16  * article</a> on <a href="https://vladmihalcea.com/">vladmihalcea.com</a>.
17  *
18  * @author Vlad Mihalcea
19  */

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