From 60aae83a42e6e5323ab6e52efdeaf8dedea9f0f6 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 2 Feb 2018 11:08:33 +0100 Subject: [PATCH] [#7140] Add support for converting java.sql.Struct to UDTRecord --- jOOQ/src/main/java/org/jooq/tools/Convert.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/tools/Convert.java b/jOOQ/src/main/java/org/jooq/tools/Convert.java index 290a24a779..ab9ec936b0 100644 --- a/jOOQ/src/main/java/org/jooq/tools/Convert.java +++ b/jOOQ/src/main/java/org/jooq/tools/Convert.java @@ -55,6 +55,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.nio.ByteBuffer; import java.sql.Date; +import java.sql.Struct; import java.sql.Time; import java.sql.Timestamp; import java.time.Instant; @@ -84,6 +85,7 @@ import org.jooq.EnumType; import org.jooq.Field; import org.jooq.Record; import org.jooq.SQLDialect; +import org.jooq.UDTRecord; import org.jooq.exception.DataTypeException; import org.jooq.tools.jdbc.MockArray; import org.jooq.types.UByte; @@ -996,6 +998,21 @@ public final class Convert { return record.into(toClass); } + else if (Struct.class.isAssignableFrom(fromClass)) { + Struct struct = (Struct) from; + + if (UDTRecord.class.isAssignableFrom(toClass)) { + try { + UDTRecord record = ((UDTRecord) toClass.newInstance()); + record.from(struct.getAttributes()); + return (U) record; + } + catch (Exception e) { + throw new DataTypeException("Cannot convert from " + fromClass + " to " + toClass, e); + } + } + } +