Невозможно вызвать хранимую процедуру postgres с UUID[] в качестве параметраJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно вызвать хранимую процедуру postgres с UUID[] в качестве параметра

Сообщение Anonymous »

У меня есть хранимая процедура.

Код: Выделить всё

CREATE OR REPLACE PROCEDURE rvprficreationadm.copy_questions(IN target_componentid uuid, INOUT source_questionids uuid[], IN createdby uuid, IN is_copied_from_qb boolean, IN createdThrCd varchar)
Эта процедура работает нормально, если я вызываю ее из базы данных. Но когда я вызываю ту же процедуру с использованием Java через Hibernate, она завершается с сообщением об ошибке ниже

ОШИБКА: function rvprficreationadm.copy_questions(uuid, bytea, uuid, boolean , изменение символов) не существует

Вот мой Java-код для вызова процедуры.

Код: Выделить всё

package com.gartner.rvp.rfi.creation.repository.impl;

import com.gartner.rvp.rfi.creation.repository.CopyQuestionProcedure;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.ParameterMode;
import javax.persistence.StoredProcedureQuery;
import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

@Repository
public class CopyQuestionProcedureImpl implements CopyQuestionProcedure {

@Autowired
private EntityManager entityManager;

@Override
@Transactional
public List copyQuestions(UUID componentId, List targetQuestionIds, UUID userId) {
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("rvprficreationadm.copy_questions");

// Register the parameters
query.registerStoredProcedureParameter(1, UUID.class, ParameterMode.IN);
query.registerStoredProcedureParameter(2, UUID[].class, ParameterMode.INOUT);
query.registerStoredProcedureParameter(3, UUID.class, ParameterMode.IN);
query.registerStoredProcedureParameter(4, Boolean.class, ParameterMode.IN);
query.registerStoredProcedureParameter(5, String.class, ParameterMode.IN);

// Set the parameter values
query.setParameter(1, componentId);
query.setParameter(2, targetQuestionIds.toArray(UUID[]::new));
query.setParameter(3, userId);
query.setParameter(4, false);
query.setParameter(5, "COPY_QUESTION");

// Execute the query
query.execute();

// Get the result (updated INOUT parameter)
UUID[] resultArray = (UUID[]) query.getOutputParameterValue(2);
return List.of(resultArray);
}
}
Это не работает со вторым параметром, поскольку он рассматривает его как байтовый тип.
Есть ли какое-либо решение для этой проблемы? Пожалуйста, дайте мне знать.
Я пытался вызвать его через List, и UUID[] оба не увенчались успехом.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -parameter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»