Skip to content

Commit 7049da7

Browse files
committed
Made JacksonUserType generic for non-collection objects
1 parent bf02ff4 commit 7049da7

File tree

3 files changed

+20
-29
lines changed

3 files changed

+20
-29
lines changed

src/main/java/org/rayjars/hibernate/JacksonUserType.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@
2121
import java.sql.ResultSet;
2222
import java.sql.SQLException;
2323
import java.sql.Types;
24+
import java.util.Properties;
2425

2526
import org.hibernate.HibernateException;
2627
import org.hibernate.engine.spi.SessionImplementor;
28+
import org.hibernate.usertype.DynamicParameterizedType;
2729
import org.hibernate.usertype.UserType;
30+
import org.hibernate.usertype.DynamicParameterizedType.ParameterType;
2831
import org.postgresql.util.PGobject;
2932

3033
import com.fasterxml.jackson.annotation.JsonInclude;
@@ -39,9 +42,10 @@
3942
*
4043
* @author Regis Leray
4144
*/
42-
public abstract class JacksonUserType implements UserType {
45+
public class JacksonUserType implements UserType, DynamicParameterizedType {
4346

4447
private static final int[] SQL_TYPES = { Types.JAVA_OBJECT };
48+
private Class returnedClass;
4549

4650
@Override
4751
public boolean equals(Object x, Object y) throws HibernateException {
@@ -164,4 +168,18 @@ public int[] sqlTypes() {
164168
return SQL_TYPES;
165169
}
166170

171+
@Override
172+
public void setParameterValues(Properties parameters) {
173+
final ParameterType reader = (ParameterType) parameters.get(PARAMETER_TYPE);
174+
175+
if (reader != null) {
176+
this.returnedClass = reader.getReturnedClass();
177+
}
178+
}
179+
180+
@Override
181+
public Class returnedClass() {
182+
return this.returnedClass;
183+
}
184+
167185
}

src/test/java/org/rayjars/hibernate/LabelUserType.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/test/java/org/rayjars/hibernate/model/Item.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class Item {
3535
@Column(name = "name")
3636
private String name;
3737

38-
@Type(type = "org.rayjars.hibernate.LabelUserType")
38+
@Type(type = "org.rayjars.hibernate.JacksonUserType")
3939
@Column(name = "label")
4040
private Label label;
4141

0 commit comments

Comments
 (0)