JPA Хранимая процедура пытается получить OUT, однако у меня есть SELECT - PullRequest
0 голосов
/ 22 марта 2019

Это довольно длинный и сложный вопрос.У меня есть две хранимые процедуры, которые используют имя файла и XML.Первая хранимая процедура работает чудесно.Он передает имя файла и XML для сохранения в базу данных, разбивает xml на 1000 кусочков и сохраняет их в отдельной строке.

Функция Get соберет каждый блок, передающий имя файла, и объединит их воедино для создания целого XML.

Я пытаюсь использовать JPA, чтобы получить ответ от моего mysql XML.У меня в настоящее время есть два параметра.Одним из них является переданное имя файла, а другим - ожидаемая строка.Я довольно новичок в JPA и Hibernate, поэтому, пожалуйста, прости меня за отсутствие знаний

Хранимая процедура get принимает только один параметр.Однако мой код, кажется, думает, что это занимает два.Вот мое JPA представление хранимой процедуры:

   @Entity
@NamedStoredProcedureQueries({
    @NamedStoredProcedureQuery(
        name = "p_xmlsave_getData",
        procedureName = "p_xmlsave_getData",
        resultClasses = {XmlSaveGetData.class},
        parameters = {
            @StoredProcedureParameter(
                name = "in_key",
                type = String.class,
                mode = ParameterMode.IN),
            @StoredProcedureParameter(
                name = "out_xml",
                type = String.class,
                mode = ParameterMode.OUT) })
})

public class XmlSaveGetData {

Вот мое грубое репо:

public interface XMLGetRepository extends CrudRepository<XmlSaveGetData, String> {
    @Procedure(name = "p_xmlsave_getData")
    String p_xmlsave_getData(@Param("in_key") String filename);

}

И, наконец, моя хранимая процедура:

CREATE DEFINER=`root`@`localhost` PROCEDURE `p_xmlsave_getData`(IN in_key char(40))
BEGIN
  DECLARE out_xml LONGTEXT DEFAULT '';
  DECLARE temp_str LONGTEXT DEFAULT '';
  declare done boolean default false;
  DECLARE cur_1 CURSOR FOR select `xml` from xmlsave where idnum = in_key order by seqnum;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := true;
open cur_1;
REPEAT
FETCH cur_1 INTO temp_str;
if(done = false) then
  set out_xml = concat(out_xml, temp_str);
end if;
UNTIL done = true
END REPEAT;
close cur_1;

select out_xml;
END

ЭтоВесь код Legacy, который я пытаюсь обновить до JPA и Hibernate.

После просмотра всей документации все сделано правильно, за исключением того, что хранимая процедура не имеет метода Out.а точнее избранный метод.У меня огромные проблемы с тем, чтобы заставить это работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...