diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index f6e3829b9c..9661687ce7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -2006,8 +2006,14 @@ public class DefaultBinding implements Binding { // interfaces. Instead, a string representation of a UDT has to be parsed // ------------------------------------------------------------------------- - @SuppressWarnings("unchecked") private static final T pgFromString(Class type, String string) { + return pgFromString(Converters.identity(type), string); + } + + @SuppressWarnings("unchecked") + private static final T pgFromString(Converter converter, String string) { + Class type = converter.toType(); + if (string == null) { return null; } @@ -2091,6 +2097,10 @@ public class DefaultBinding implements Binding { else if (Record.class.isAssignableFrom(type)) { return (T) pgNewRecord(type, null, string); } + else { + Converter c = (Converter) converter; + return c.from(pgFromString(c.fromType(), string)); + } throw new UnsupportedOperationException("Class " + type + " is not supported"); } @@ -2237,7 +2247,7 @@ public class DefaultBinding implements Binding { } static final void pgSetValue(Record record, Field field, String value) { - record.set(field, pgFromString(field.getType(), value)); + record.set(field, pgFromString(field.getConverter(), value)); } private static final void pgRenderEnumCast(RenderContext render, Class type) {