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
23 public class JsonBinaryType
24 extends AbstractHibernateType<Object> implements DynamicParameterizedType {
25
26 public static final JsonBinaryType INSTANCE = new JsonBinaryType();
27
28 public JsonBinaryType() {
29 super(
30 JsonBinarySqlTypeDescriptor.INSTANCE,
31 new JsonTypeDescriptor(Configuration.INSTANCE.getObjectMapperWrapper())
32 );
33 }
34
35 public JsonBinaryType(Type javaType) {
36 super(
37 JsonBinarySqlTypeDescriptor.INSTANCE,
38 new JsonTypeDescriptor(Configuration.INSTANCE.getObjectMapperWrapper(), javaType)
39 );
40 }
41
42 public JsonBinaryType(Configuration configuration) {
43 super(
44 JsonBinarySqlTypeDescriptor.INSTANCE,
45 new JsonTypeDescriptor(configuration.getObjectMapperWrapper()),
46 configuration
47 );
48 }
49
50 public JsonBinaryType(ObjectMapper objectMapper) {
51 super(
52 JsonBinarySqlTypeDescriptor.INSTANCE,
53 new JsonTypeDescriptor(new ObjectMapperWrapper(objectMapper))
54 );
55 }
56
57 public JsonBinaryType(ObjectMapperWrapper objectMapperWrapper) {
58 super(
59 JsonBinarySqlTypeDescriptor.INSTANCE,
60 new JsonTypeDescriptor(objectMapperWrapper)
61 );
62 }
63
64 public JsonBinaryType(ObjectMapper objectMapper, Type javaType) {
65 super(
66 JsonBinarySqlTypeDescriptor.INSTANCE,
67 new JsonTypeDescriptor(new ObjectMapperWrapper(objectMapper), javaType)
68 );
69 }
70
71 public JsonBinaryType(ObjectMapperWrapper objectMapperWrapper, Type javaType) {
72 super(
73 JsonBinarySqlTypeDescriptor.INSTANCE,
74 new JsonTypeDescriptor(objectMapperWrapper, javaType)
75 );
76 }
77
78 public String getName() {
79 return "jsonb";
80 }
81
82 @Override
83 public void setParameterValues(Properties parameters) {
84 ((JsonTypeDescriptor) getJavaTypeDescriptor()).setParameterValues(parameters);
85 }
86
87 }