跳到主要内容

数组类型处理器

数组类型处理器位于 net.hasor.dbvisitor.types.handler.array 包中。

类型处理器Java 类型作用
ArrayTypeHandlerjava.sql.Array通用数组处理,使用 getArray/setArray 读写
PgArrayTypeHandlerjava.sql.ArrayPostgreSQL 数组类型专用处理
PgVectorTypeHandlerList<Float>PostgreSQL pgvector 向量类型处理

PgVectorTypeHandler

PgVectorTypeHandler 用于处理 PostgreSQL pgvector 扩展的 vector 类型,将 List<Float> 与 pgvector 的文本格式 [1.0,2.0,3.0] 互转。

使用示例
public class EmbeddingEntity {
@Column(typeHandler = PgVectorTypeHandler.class)
private List<Float> embedding;
}

数组元素类型映射

在创建 java.sql.Array 类型时需要指定元素类型,例如:

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

数组中的元素 Java 类型所对应的 JDBC 类型为下表所示:

数组元素类型对应的 JDBC 类型
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