Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.

Commit 4cbee6d

Browse files
authored
feat: allow using UUID in PreparedStatement (#365)
Enables the usage of UUIDs as a parameter in PreparedStatements. UUIDs are automatically translated to strings. Fixes #364
1 parent d8dfa32 commit 4cbee6d

4 files changed

Lines changed: 424 additions & 496 deletions

File tree

src/main/java/com/google/cloud/spanner/jdbc/JdbcParameterStore.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.util.ArrayList;
4646
import java.util.Arrays;
4747
import java.util.List;
48+
import java.util.UUID;
4849

4950
/** This class handles the parameters of a {@link PreparedStatement}. */
5051
class JdbcParameterStore {
@@ -507,6 +508,8 @@ private Builder setParamWithKnownType(ValueBinder<Builder> binder, Object value,
507508
}
508509
} else if (value instanceof URL) {
509510
return binder.to(((URL) value).toString());
511+
} else if (value instanceof UUID) {
512+
return binder.to(((UUID) value).toString());
510513
}
511514
throw JdbcSqlExceptionFactory.of(value + " is not a valid string", Code.INVALID_ARGUMENT);
512515
case Types.DATE:
@@ -649,6 +652,8 @@ private Builder setParamWithUnknownType(ValueBinder<Builder> binder, Object valu
649652
return binder.to(String.valueOf((char[]) value));
650653
} else if (URL.class.isAssignableFrom(value.getClass())) {
651654
return binder.to(((URL) value).toString());
655+
} else if (UUID.class.isAssignableFrom(value.getClass())) {
656+
return binder.to(((UUID) value).toString());
652657
} else if (byte[].class.isAssignableFrom(value.getClass())) {
653658
return binder.to(ByteArray.copyFrom((byte[]) value));
654659
} else if (InputStream.class.isAssignableFrom(value.getClass())) {

0 commit comments

Comments
 (0)