如何解决JPA / Spring Data JPA-如何在不指定所有参数的情况下调用存储过程?
我的应用程序调用以下SQL Server存储过程:
CREATE PROCEDURE [dbo].[createSession]
@token nvarchar(max) = '',@user nvarchar(max) = '',@password nvarchar(max) = '',@sessionUid nvarchar(max)= null out
AS
BEGIN ...
使用SQL,我可以这样称呼它:
exec createSession
@password= 'pass',@user = 'user',@sessionUid = @sessionUid out
请注意,令牌是可选的,因此我不必指定它(也不需要)。而且由于使用命名参数,所以可以指定与存储过程中定义的顺序不同的顺序。
当我从应用程序拨打电话时:
@Entity
@NamedStoredProcedureQuery(name = "session",procedureName = "createSession",parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN,name = "user",type = String.class),@StoredProcedureParameter(mode = ParameterMode.IN,name = "password",@StoredProcedureParameter(mode = ParameterMode.OUT,name = "sessionUid",type = String.class) })
public class Session { ... }
public interface SessionRepo extends Repository<Session,String> {
@Procedure(name="session",outputParameterName="SessionUid")
String getSession(@Param("user") String user,@Param("password") String password);
我收到一条错误消息,指出“索引4超出范围”。
如果我将token
添加到@NamedStoredProcedureQuery
和getSession
方法中,则可以正常工作。但是实际的存储过程createSession
包含许多可选参数。有没有一种方法可以仅使用我要为其指定值的参数来调用存储过程?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。