Как использовать UUID в шаблоне JDBC?JAVA

Программисты JAVA общаются здесь
Anonymous
Как использовать UUID в шаблоне JDBC?

Сообщение Anonymous »

Я использую среду Spring с шаблоном JDBC, а также Postgres.

У меня есть таблицы в Postgres, которые используют UUID в качестве первичного ключа, а тип этого столбца — собственные UUID Postgres. Как сохранить эти UUID в подготовленном операторе, созданном с помощью шаблона JDBC?

Я попробовал преобразовать UUID в строку следующим образом:

Код: Выделить всё

int rowsAffected = this.jdbc.update(sql, new Object[] {
baseMaterial.getId().toString().toLowerCase(),
baseMaterial.getName(),
baseMaterial.getDescription()
});
но это приводит к этой ошибке:

Код: Выделить всё

ERROR: column "id" is of type uuid but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
А если я просто использую необработанный UUID вот так:

Код: Выделить всё

int rowsAffected = this.jdbc.update(sql, new Object[] {
baseMaterial.getId(),
baseMaterial.getName(),
baseMaterial.getDescription()
});
тогда я получаю эту ошибку:

Код: Выделить всё

org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of java.util.UUID. Use setObject() with an explicit Types value to specify the type to use.
Есть идеи? Это сводит меня с ума.

Подробнее здесь: https://stackoverflow.com/questions/470 ... c-template

Вернуться в «JAVA»