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