Postgresql: Преобразование bytea в bigint

Вопрос:Мне нужно преобразовать запись 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, а

Вопрос:

Мне нужно преобразовать запись 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(‘01’::bytea, ‘hex’), 16, ‘0’))::bit(64)::bigint Ответ №2

Один из ваших параметров – null, который нельзя преобразовать в bigint.

Оцените статью
Добавить комментарий