Spring JDBC выдает исключение при сравнении postgres bytea со строкой

#java #spring #postgresql #spring-jdbc #bytea

Вопрос:

У меня есть такой столик

 create table tabl(id bytea, val text);
 

amp; запрос, подобный этому

 select * from tabl where id='foo';
 

когда я выполняю этот запрос в PSQL или pgAdmin, он работает

но когда тот же запрос выполняется Spring JdbcTemplate, он создает исключение

 exception is org.postgresql.util.PSQLException: ERROR: operator does not exist: bytea = character varying
  Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
 

Код Java выглядит следующим образом:

 jdbcTemplate.queryForObject("select val from tabl where id=?", new Object[] {id}, String.class)
 

хотя я знаю, что могу исправить это с помощью decode функции

 jdbcTemplate.queryForObject("select val from tabl where id=decode(?,'escape')", new Object[] {id}, String.class)
 

Похоже, что Postgres автоматически передает текст в bytea для сравнения, но зачем создавать исключение с spring jdbc?

Спасибо