Je suis obligé de gérer un champ d'auto-incrément à partir du code. J'ai décidé d'écrire une procédure stockée pour le faire pour moi. L'idée est d'avoir une procédure qui insère une nouvelle ligne et renvoie la valeur auto-incrémentée à Java afin que je puisse travailler plus loin. Ce qui suit est ce que j'ai jusqu'à présent. Je ne sais pas quoi changer pour combler les lacunes afin que tout fonctionne.Hibernate Stored Procédure Résultats
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
Ensuite, dans mon code Java j'ai ce qui suit.
@NamedNativeQuery(name="addNewMSO",
query="exec addNewMSO :sourceApplication :selectionStatusDate :sysLstUpdtUserId", callable=true)
Et mon OAC appelle comme ça ...
Query q = session.getNamedQuery("addNewMSO");
q.setParameter("sourceApplication", mso.getSourceApplication());
q.setParameter("selectionStatusDate", mso.getSelectionStatusDate());
q.setParameter("sysLstUpdtUserId", mso.getSysLstUpdtUserId());
q.executeUpdate();
Même alors, cela ne fonctionne pas, parce que je reçois une erreur « requêtes scalaires natives pures ne sont pas encore pris en charge ». Donc je ne sais pas où aller ensuite. J'ai lu les documents Hibernate, mais je ne sais pas comment obtenir une valeur de retour du SP. Mais je ne peux même pas l'appeler ... pouah!
TIA pour toute aide.