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.DecimalArrayTypeDescriptor;
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.math.BigDecimal;
10 import java.util.Properties;
11
12 /**
13  * Maps a {@code decimal[]} array on a PostgreSQL ARRAY column type.
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 article</a>.
16  *
17  * @author Moritz Kobel
18  */

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