【问题标题】:How to call a stored procedure with two parameters using Spring and Hibernate如何使用 Spring 和 Hibernate 调用具有两个参数的存储过程
【发布时间】:2014-09-05 15:04:39
【问题描述】:

我想使用 Spring MVC 和 Hibernate 调用带有两个参数的存储过程。

我的模型中的代码是这样的:

 @NamedNativeQuery(name="callprocLogin", query = "{CALL procLogin (:username, :password)}",  callable = true, resultClass =SubscriberLogin.class)

而我的 DAO 方法是

public SubscriberLogin getUserAndPassword(String username, String password) {   
        
    //Using Stored Procedure
    List<String> param = new ArrayList<String>();
    param.add(username);
    param.add(password);
    List<SubscriberLogin> list =null;
    list = getHibernateTemplate().findByNamedQueryAndNamedParam("callprocLogin", "username,password", param);       
    return list.get(0);
}

我哪里弄错了?

【问题讨论】:

  • 上次我浪费时间尝试使用 Nhibernate 调用存储过程,我最终使用了 ADO.NET。更容易,也更容易理解。
  • findByNamedQueryAndNamedParam(String queryName, String[] paramNames, Object[] values)

标签: java hibernate spring-mvc jpa stored-procedures


【解决方案1】:

您的问题与您发送参数参数的方式有关。

代替:

list = getHibernateTemplate().findByNamedQueryAndNamedParam("callprocLogin", "username,password", param);

你应该有:

list = getHibernateTemplate().findByNamedQueryAndNamedParam(
    "callprocLogin", 
    new String[] {"username", "password"}, 
    new Object[] {username, password}
);

【讨论】:

  • 非常感谢。解决了!
  • Vlad Mihalcea 的回答非常有用。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 2021-11-24
  • 1970-01-01
  • 2018-06-25
  • 2021-09-19
  • 2015-11-03
相关资源
最近更新 更多