我被迫从代码管理自动增量字段。我决定写一个存储过程为我做这个。我们的想法是创建一个插入新行的过程,并将自动递增的值返回给Java,以便我可以继续使用它。以下是我目前为止的内容。我不知道要改变什么才能填补空白,使其全部工作。休眠存储过程结果
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE addNewMSO
@sourceApplication char(8),
@selectionStatusDate datetime = NULL,
@sysLstUpdtUserId char(10)
AS
BEGIN
SET NOCOUNT ON;
Declare @newVal int
SET @newVal = (select max(seqNo) from MemberSelectedOptions) + 1
INSERT INTO MemberSelectedOptions
([SourceApplication]
,[SeqNo]
,[SelectionStatusDate]
,[SysLstUpdtUserId])
VALUES
(@sourceApplication
,@newVal
,@selectionStatusDate
,@sysLstUpdtUserId)
END
GO
然后在我的Java代码中,我有以下几点。
@NamedNativeQuery(name="addNewMSO",
query="exec addNewMSO :sourceApplication :selectionStatusDate :sysLstUpdtUserId", callable=true)
我的DAO调用它像这样...
Query q = session.getNamedQuery("addNewMSO");
q.setParameter("sourceApplication", mso.getSourceApplication());
q.setParameter("selectionStatusDate", mso.getSelectionStatusDate());
q.setParameter("sysLstUpdtUserId", mso.getSysLstUpdtUserId());
q.executeUpdate();
即使是这样,这是不行的,因为我得到一个“纯天然标量的查询尚不支持”错误。所以我不知道下一步该去哪里。我已经阅读了Hibernate文档,但我不知道如何从SP获取返回值。但我仍然无法称之为......呃!
TIA对所有帮助。