Это довольно длинный и сложный вопрос.У меня есть две хранимые процедуры, которые используют имя файла и 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.а точнее избранный метод.У меня огромные проблемы с тем, чтобы заставить это работать.