Я пытался вызвать хранимый процесс mysql из репозитория jpa данных весны.
Сохраненный процесс MySQL:
CREATE PROCEDURE `test`(
IN `id` INT,
OUT `op` INT
)
BEGIN
SET op = 100;
select @op;
END
Примечание: если я неt указать "select @op;"Я ничего не получаю.
Объявление NamedStoredProcedureQueries в классе сущности:
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(name = "test", procedureName = "test", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "id", type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, name = "op", type = Integer.class) }) })
Метод репозитория:
@Procedure(name = "test")
Integer callTestSP(@Param("id") Integer id);
Я получаю значение как NULL.
Запросы из журнала:
Query CALL test(8,0,0,0,@com_mysql_jdbc_outparam_op)
Query SELECT @com_mysql_jdbc_outparam_op
из журналов Я понял, что пружинные данные jpa используют псевдоним в качестве "@com_mysql_jdbc_outparam_op" для выходной переменной, но mysql сохранял proc, возвращая другой.В результате я получаю NULL.