Я пытаюсь передать список / набор идентификаторов хранимой процедуре 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]
Как я могу заставить его работать?