0
我试图使用表值参数来存储我们使用Hibernate的Session.createSQLQuery
调用的存储过程。使用Hibernate将表值参数导入存储过程
我创建了一个类型,并存储在SQL过程:
CREATE TYPE StringListType AS TABLE
(
StringText NVARCHAR(256)
)
CREATE PROCEDURE [dbo].[TestStringListType]
(
@stringList StringListType READONLY
)
AS
SELECT * FROM @stringList
我可以在SQL中使用这项功能:
BEGIN
Declare @StringListTemp As StringListType
insert INTO @StringListTemp (StringText)
values ('foo'), ('bar'), ('baz')
EXEC TestStringListType @StringListTemp
END
我想用Java做的是一样的东西:
String fakeQueryStr = "call TestStringListType :list";
SQLQuery fakeQuery = getSession().createSQLQuery(fakeQueryStr);
ArrayList<String> data = Lists.newArrayList("foo", "bar", "baz");
fakeQuery.setParameter("list", data);
return fakeQuery.list();
无论setParameter
或setParameterList
在这里工作的过程。如何将我的字符串列表映射为此类型以用作参数?