PgVector Jackson Migration (#1692)
PgVector Jackson Migration Fixes https://github.com/langchain4j/langchain4j/issues/1684
This commit is contained in:
parent
507498f707
commit
673cf0c393
|
@ -34,6 +34,11 @@
|
|||
<version>${pgvector-java.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package dev.langchain4j.store.embedding.pgvector;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import dev.langchain4j.data.document.Metadata;
|
||||
import dev.langchain4j.internal.Json;
|
||||
import dev.langchain4j.store.embedding.filter.Filter;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
|
||||
import static com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT;
|
||||
import static dev.langchain4j.internal.ValidationUtils.ensureNotEmpty;
|
||||
import static dev.langchain4j.internal.Utils.getOrDefault;
|
||||
|
||||
|
@ -14,6 +17,8 @@ import static dev.langchain4j.internal.Utils.getOrDefault;
|
|||
* Handle metadata as JSON column.
|
||||
*/
|
||||
class JSONMetadataHandler implements MetadataHandler {
|
||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
|
||||
.enable(INDENT_OUTPUT);
|
||||
|
||||
final MetadataColumDefinition columnDefinition;
|
||||
final String columnName;
|
||||
|
@ -63,8 +68,8 @@ class JSONMetadataHandler implements MetadataHandler {
|
|||
public Metadata fromResultSet(ResultSet resultSet) {
|
||||
try {
|
||||
String metadataJson = getOrDefault(resultSet.getString(columnsNames().get(0)),"{}");
|
||||
return new Metadata(Json.fromJson(metadataJson, Map.class));
|
||||
} catch (SQLException e) {
|
||||
return new Metadata(OBJECT_MAPPER.readValue(metadataJson, Map.class));
|
||||
} catch (SQLException | JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
@ -77,8 +82,9 @@ class JSONMetadataHandler implements MetadataHandler {
|
|||
@Override
|
||||
public void setMetadata(PreparedStatement upsertStmt, Integer parameterInitialIndex, Metadata metadata) {
|
||||
try {
|
||||
upsertStmt.setObject(parameterInitialIndex, Json.toJson(metadata.asMap()), Types.OTHER);
|
||||
} catch (SQLException e) {
|
||||
upsertStmt.setObject(parameterInitialIndex,
|
||||
OBJECT_MAPPER.writeValueAsString(metadata.asMap()), Types.OTHER);
|
||||
} catch (SQLException | JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue