Передача списка значений в процедуру sql в репозитории JPA - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь передать список / набор идентификаторов хранимой процедуре SQL на SQL Server 2012.

Я объявил свой собственный табличный тип, но не могу его сделать возможно работать вместе с репозиторием Spring JPA, который пытается передать каждый элемент списка как отдельный параметр.

Это мой репозиторий:

@Repository
public interface DocumentSummaryRepository extends JpaRepository <DocumentSummary, Long> {
    @Query(value = "{call manageDuplicates(:ids)}", nativeQuery = true)
    @Modifying
    int executeProcedure(@Param("ids") Set<Long> ids);
}

Это моя процедура:

CREATE TYPE dbo.IDList
AS TABLE
(
  ID INT
);
GO

  CREATE PROCEDURE manageDuplicates @ids AS IDList READONLY
  AS
BEGIN
    SELECT ID FROM @ids; 
END

Журнал консоли для списка с двумя элементами:

DEBUG o.h.SQL - {call manageDuplicates(?, ?)}
WARN  o.h.e.j.s.SqlExceptionHelper - SQL Error: 8144, SQLState: S0002
ERROR o.h.e.j.s.SqlExceptionHelper - Procedure or function manageDuplicates has too many arguments specified.

Журнал с logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE в соответствии с запросом @Mansoor:

DEBUG o.h.SQL - {call manageDuplicates(?, ?)} TRACE o.h.t.d.s.BasicBinder - binding parameter [1] as [BIGINT] - [126] TRACE o.h.t.d.s.BasicBinder - binding parameter [2] as [BIGINT] - [127]

Как я могу заставить его работать?

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