Skip to main content

8.8 Array Type Handler

Array type handlers are located in the net.hasor.dbvisitor.types.handler.array package.

HandlerJava TypePurpose
ArrayTypeHandlerInput: java.sql.Array or object array; output: Java arrayUses getArray/setArray; frees SQL Array after reading
PgArrayTypeHandlerInput: java.sql.Array or object array; output: Object[]Explicit PostgreSQL element type

Vector field configuration is covered in Vector Type Handlers.

caution

ArrayTypeHandler accepts object arrays and primitive arrays such as int[], boxing primitive elements automatically. PgArrayTypeHandler accepts object arrays such as Integer[], but not primitive arrays. For vector parameters, see Milvus Parameter Binding.

The general ArrayTypeHandler converts non-empty arrays of Double elements to Float arrays when reading. To preserve double precision, use JDBC getArray() with your own conversion or a dedicated handler. Callers are responsible for freeing SQL Array inputs they supply.

Array Element Type Mapping​

When creating a java.sql.Array type, you need to specify the element type, for example:

Array array = ps.getConnection().createArrayOf(typeName, ...);

Array element Java types map to the following JDBC types:

Element Java typeJDBC type
boolean.classJDBCType.BOOLEAN
Boolean.classJDBCType.BOOLEAN
byte.classJDBCType.TINYINT
Byte.classJDBCType.TINYINT
short.classJDBCType.SMALLINT
Short.classJDBCType.SMALLINT
int.classJDBCType.INTEGER
Integer.classJDBCType.INTEGER
long.classJDBCType.BIGINT
Long.classJDBCType.BIGINT
float.classJDBCType.FLOAT
Float.classJDBCType.FLOAT
double.classJDBCType.DOUBLE
Double.classJDBCType.DOUBLE
Calendar.classJDBCType.CHAR
char.classJDBCType.CHAR
java.util.Date.classJDBCType.TIMESTAMP
java.sql.Date.classJDBCType.TIMESTAMP
java.sql.Timestamp.classJDBCType.TIMESTAMP
java.sql.Time.classJDBCType.TIMESTAMP
Instant.classJDBCType.TIMESTAMP
LocalDateTime.classJDBCType.TIMESTAMP
LocalDate.classJDBCType.TIMESTAMP
LocalTime.classJDBCType.TIMESTAMP
ZonedDateTime.classJDBCType.TIMESTAMP
JapaneseDate.classJDBCType.TIMESTAMP
YearMonth.classJDBCType.TIMESTAMP
Year.classJDBCType.TIMESTAMP
Month.classJDBCType.TIMESTAMP
OffsetDateTime.classJDBCType.TIMESTAMP
OffsetTime.classJDBCType.TIMESTAMP
String.classJDBCType.VARCHAR
BigInteger.classJDBCType.BIGINT
BigDecimal.classJDBCType.NUMERIC
Byte[].classJDBCType.VARBINARY
byte[].classJDBCType.VARBINARY
URL.classJDBCType.DATALINK
URI.classJDBCType.DATALINK