【发布时间】:2017-12-19 22:59:02
【问题描述】:
我正在尝试对我们使用 Hibernate 的 Session.createSQLQuery 调用的存储过程使用表值参数。
我在 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 都不在这里工作。如何将我的字符串列表映射到此类型以用作参数?
【问题讨论】:
标签: java sql sql-server hibernate tsql