Complex SQL Data Types
The connector supports the complex SQL data types ARRAY, MAP, and ROW. Nested complex data types are also supported, such as ARRAY[MAP] or ROW(ARRAY [INTEGER]).
Data stored in these types can also be bound in prepared statements.
For example, to pass ARRAY data in a prepared statement, use the following syntax:
Array intArray = connection.createArrayOf("SQL_INTEGER", new Integer[]{5,6});
preparedStatement.setArray(i, intArray);
As another example, to pass MAP data in a prepared statement, use the following syntax:
HashMap<Integer, Long> hmap = new HashMap<>();
hmap2.put(3, (long) 5);
hmap2.put(4, (long) 6);
preparedStatement.setObject(1, hmap, Types.JAVA_OBJECT);
And as another example, to pass ROW data in a prepared statement for the following query:
INSERT INTO hive.default.rowtable VALUES ROW(CAST(ROW(REAL '2.3', DOUBLE '4.9') AS ROW(x REAL, y DOUBLE)))"
Use the following syntax:
LinkedHashMap<Object, Object> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("x", (float)2.3);
linkedHashMap.put("y", 4.9);
preparedStatement = connection.prepareStatement("insert into hive.default.rowtable values row(?)");
preparedStatement.setObject(1, lhmp, Types.JAVA_OBJECT);