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.UUIDArrayTypeDescriptor;
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 import java.util.UUID;
11
12 /**
13  * Maps an {@code UUID[]} 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>.
14  * <p>
15  * 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>.
16  *
17  * @author Rafael Acevedo
18  */

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