1 package com.vladmihalcea.hibernate.type.json;
2
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import com.vladmihalcea.hibernate.type.AbstractHibernateType;
5 import com.vladmihalcea.hibernate.type.json.internal.JsonBinarySqlTypeDescriptor;
6 import com.vladmihalcea.hibernate.type.json.internal.JsonTypeDescriptor;
7 import com.vladmihalcea.hibernate.type.util.Configuration;
8 import com.vladmihalcea.hibernate.type.util.ObjectMapperWrapper;
9 import org.hibernate.usertype.DynamicParameterizedType;
10
11 import java.lang.reflect.Type;
12 import java.util.Properties;
13
14
30 public class JsonBinaryType
31 extends AbstractHibernateType<Object> implements DynamicParameterizedType {
32
33 public static final JsonBinaryType INSTANCE = new JsonBinaryType();
34
35 public JsonBinaryType() {
36 super(
37 JsonBinarySqlTypeDescriptor.INSTANCE,
38 new JsonTypeDescriptor(Configuration.INSTANCE.getObjectMapperWrapper())
39 );
40 }
41
42 public JsonBinaryType(Type javaType) {
43 super(
44 JsonBinarySqlTypeDescriptor.INSTANCE,
45 new JsonTypeDescriptor(Configuration.INSTANCE.getObjectMapperWrapper(), javaType)
46 );
47 }
48
49 public JsonBinaryType(Configuration configuration) {
50 super(
51 JsonBinarySqlTypeDescriptor.INSTANCE,
52 new JsonTypeDescriptor(configuration.getObjectMapperWrapper()),
53 configuration
54 );
55 }
56
57 public JsonBinaryType(ObjectMapper objectMapper) {
58 super(
59 JsonBinarySqlTypeDescriptor.INSTANCE,
60 new JsonTypeDescriptor(new ObjectMapperWrapper(objectMapper))
61 );
62 }
63
64 public JsonBinaryType(ObjectMapperWrapper objectMapperWrapper) {
65 super(
66 JsonBinarySqlTypeDescriptor.INSTANCE,
67 new JsonTypeDescriptor(objectMapperWrapper)
68 );
69 }
70
71 public JsonBinaryType(ObjectMapper objectMapper, Type javaType) {
72 super(
73 JsonBinarySqlTypeDescriptor.INSTANCE,
74 new JsonTypeDescriptor(new ObjectMapperWrapper(objectMapper), javaType)
75 );
76 }
77
78 public JsonBinaryType(ObjectMapperWrapper objectMapperWrapper, Type javaType) {
79 super(
80 JsonBinarySqlTypeDescriptor.INSTANCE,
81 new JsonTypeDescriptor(objectMapperWrapper, javaType)
82 );
83 }
84
85 public String getName() {
86 return "jsonb";
87 }
88
89 @Override
90 public void setParameterValues(Properties parameters) {
91 ((JsonTypeDescriptor) getJavaTypeDescriptor()).setParameterValues(parameters);
92 }
93
94 }