JPA StoredProcedureQuery: передать UUID в качестве параметра - PullRequest
0 голосов
/ 29 мая 2018

Я использую JPA 2.1 (Hibernate), Postgres 9.6, и мне нужно передать java.util.UUID в качестве параметра StoredProcedureQuery следующим образом:

StoredProcedureQuery proc = em.createStoredProcedureQuery(myProc)
        .registerStoredProcedureParameter(0, UUID.class, ParameterMode.IN)
        .registerStoredProcedureParameter(1, ...)
        .setParameter(0, myUuid)
        .setParameter(1, ...);

По умолчанию тип Java UUID интерпретируется как тип Postgres bytea , и я получаю что-то вроде:

ERROR: function my_function(bytea, ...) does not exist.

Конечно, он не существует, потому что моя функция:

my_function(UUID, ...)

Итак, есть ли способ явно определить, какой тип уровня базы данных должен использоваться для определенного параметра?

Может быть что-то вроде того, который мы используем в классах сущностей с аннотацией:

@Type(type="pg-uuid")
private UUID uuid;

Один очевидный обходной путь - передать значение как String , а затем привести его к UUID внутри функции, но ...

...