Вопрос:
Мне нужно преобразовать запись bytea для запроса в bigint. Как это можно сделать?
Дополнительная информация:
У меня есть спящий репозиторий, как показано ниже –
@Query(value = «update Sample_Table set other_id = ?1 where id = ?2», nativeQuery = true) void saveOrUpdateOtherId(Long other_id, Long id);
Hibernate каким-то образом принимает id (в where where) как bytea, а так как “Sample_Table” имеет это поле id как bigint и, таким образом, он вызывает проблему несоответствия типов.
Я попытался использовать CAST для преобразования bytea в bigint, но это не удалось, и сообщение об ошибке msg: bytea не может быть отправлено на bigint.
Как изменить bytea на bigint?
Edit:
Sample_Table DAO:
@Table(name = «Sample_Table») public class Sample{ @Id @Column(name = «id», unique = true) @GeneratedValue private Long id; @Column(name = «other_id») private Long other_id; }
Поле
id определено здесь как Long.
Edit-2
Если кто-то получит такую проблему, скорее всего, он передаст нулевое значение в запросе.
Ответ №1
Кажется, что нет простой функции для перевода из байта (куска памяти) в базовый тип данных, кроме прохода через бит типа данных из правильно заполненной шестнадцатеричной строки:
SELECT (‘x’||lpad(encode(‘