From f58e423d89e5da40b92dff3c6f4d113a625ecb4d Mon Sep 17 00:00:00 2001 From: Gregor Petrin Date: Fri, 18 Sep 2015 21:39:11 +0200 Subject: [PATCH] Food for though concept of multiple dimension array support --- .../net/kaleidos/hibernate/usertype/ArrayType.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/java/net/kaleidos/hibernate/usertype/ArrayType.java b/src/java/net/kaleidos/hibernate/usertype/ArrayType.java index 0275520..6db8da1 100644 --- a/src/java/net/kaleidos/hibernate/usertype/ArrayType.java +++ b/src/java/net/kaleidos/hibernate/usertype/ArrayType.java @@ -35,6 +35,7 @@ public class ArrayType implements UserType, ParameterizedType { } private Class typeClass; + private int[] arrayDimensions; private BidiEnumMap bidiMap; @Override @@ -78,11 +79,14 @@ public void setParameterValues(Properties parameters) { if (typeClass == null) { throw new RuntimeException("The user type needs to be configured with the type. None provided"); } + Integer dimension = 1; + if (parameters.containsKey("dim")) dimension = (Integer)(parameters.get("dim")); + arrayDimensions = new int[dimension]; } @Override public Class returnedClass() { - return java.lang.reflect.Array.newInstance(typeClass, 0).getClass(); + return java.lang.reflect.Array.newInstance(typeClass, arrayDimensions).getClass(); } @Override @@ -103,7 +107,7 @@ public int[] sqlTypes() { @Override public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) throws HibernateException, SQLException { Object result = null; - Class typeArrayClass = java.lang.reflect.Array.newInstance(typeClass, 0).getClass(); + Class typeArrayClass = java.lang.reflect.Array.newInstance(typeClass, arrayDimensions).getClass(); Array sqlArray = rs.getArray(names[0]); if (!rs.wasNull()) { Object array = sqlArray.getArray(); @@ -128,7 +132,7 @@ public void nullSafeSet(PreparedStatement st, Object value, int index, SessionIm } Object[] valueToSet = (Object[]) value; - Class typeArrayClass = java.lang.reflect.Array.newInstance(typeClass, 0).getClass(); + Class typeArrayClass = java.lang.reflect.Array.newInstance(typeClass, arrayDimensions).getClass(); if (typeClass.isEnum()) { typeArrayClass = Integer[].class;