On Tue, 3 Mar 2009, Thomas Kellerer wrote:
> I have a table with a column of type UUID and I would like to import data
> into that table.
>
> I'm using a Java based import tool that will use a PreparedStatement and
> setObject() (passing a String variable) to insert the data.
>
> "ERROR: column "guid" is of type uuid but expression is of type character
> varying"
You should use setObject(<column>, <string value>, Types.OTHER) to
indicate that while you are passing a String, you aren't expecting the
server type to be a string datatype.
Alternatively, you can use the 8.4dev JDBC4 driver and issue:
setObject(<column>, <java.util.UUID object>);
> What I don't understand is that doing an insert with a character literal:
>
> INSERT INTO my_table (guid_column, ...)
> VALUES
> ('a0eebc999c0b4ef8bb6d6bb9bd380a11', ...)
Here you aren't providing any specific type information, just a literal.
By saying setString or setObject with a String parameter you are saying
that it really is a String.
Kris Jurka