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.LocalDateArrayTypeDescriptor;
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 java.Time.LocalDate[]} array on a PostgreSQL date[] ARRAY type. Multidimensional arrays are
13  * supported as well, as
14  * explained in <a href="https://vladmihalcea.com/multidimensional-array-jpa-hibernate/">this article</a>.
15  * <p>
16  * For more details about how to use it, check out
17  * <a href="https://vladmihalcea.com/how-to-map-java-and-sql-arrays-with-jpa-and-hibernate/">this
18  * article</a> on <a href="https://vladmihalcea.com/">vladmihalcea.com</a>.
19  *
20  * @author Andrew Lazarus, based on DateArrayType by Guillaume Briand
21  */

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