В Java springdata я не могу добавить uuid в sql - PullRequest
1 голос
/ 21 января 2020

это код запроса.

@Query(value = "select * from lb.relationship where serverid=?1 and serviceid=?2 and port=?3", nativeQuery = true)
VipServiceToServerRelationship findByServerIdAndServiceIdAndPort(UUID svrId, UUID svcId, String port);

это схема.

CREATE TABLE lb.relationship (
    id uuid NOT NULL,
    serverid uuid NOT NULL,
    serviceid uuid NOT NULL,
    port character varying NOT NULL
);

Я пробую команду ниже непосредственно в консоли pg и получаю правильный ответ

select * from lb.relationship  where serverid=('d5dd2a02-960b-4c7b-ad9c-92e3650ab763'::uuid) and serviceid=('83265e81-7e14-4ff0-a4cc-6228a0d25f0d'::uuid) and port='80'
or
select * from lb.relationship  where serverid='d5dd2a02-960b-4c7b-ad9c-92e3650ab763' and serviceid='83265e81-7e14-4ff0-a4cc-6228a0d25f0d' and port='80'

Сообщение об ошибке:

оператор не существует: uuid = bytea

Из ответа на другие похожие вопросы я все еще не могу выяснить мою неудачу. У меня нет лишних "" или ";" в моем sql.


Обновление

Я пытаюсь запустить Springdata напрямую, которые получают ту же ошибку.

* * Вызывается: org. postgresql .util.PSQLException: ОШИБКА: оператор не существует: uuid = bytea Подсказка: ни один оператор не соответствует данному имени и типу (аргументам) аргумента. Возможно, вам придется добавить явные приведения типов. **

- hours 12 часов go


Решение

Как только я изменю схему с uuid на строка, все исправлено

- hours 11 часов go

1 Ответ

1 голос
/ 21 января 2020

В: Вы пробовали явное приведение типов?

ПРИМЕР:

@Query(value = "select * from lb.relationship where serverid=CAST(?1 AS uuid) and serviceid=CAST(?2 AS uuid) and port=?3", nativeQuery = true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...