0

我想将值传递给 NamedQuery。我从一个视图中选择,我在 xml 文件中的 namedQuery 如下所示:

<sql-query name="findAll">
      <return alias="RcvrGroup" class="com.app.rcvp.model.RcvrGroup"/>
      <![CDATA[select * from abc.RCVR_GROUP_VW]]>
      </sql-query>

在我的 DAO 中,我只使用 findByNamedQuery

public List<RcvrGroup> findAllErrorVar(){
    return getHibernateTemplate().findByNamedQuery("findAll");
}

现在,如果我有一个“where”子句并且我的查询如下所示:

<sql-query name="findAll">
          <return alias="RcvrGroup" class="com.app.rcvp.model.RcvrGroup"/>
          <![CDATA[select * from abc.RCVR_GROUP_VW where rcvr_mgr=:rcvr_mgr]]>
          </sql-query>

我将如何执行并传递返回列表的值?

4

2 回答 2

1

更改查询以使用占位符,?例如

  <sql-query name="findAll">
      <return alias="RcvrGroup" class="com.app.rcvp.model.RcvrGroup"/>
      <![CDATA[select * from abc.RCVR_GROUP_VW where rcvr_mgr=?]]>
      </sql-query>

然后将值作为第二个参数传递。

   return getHibernateTemplate().findByNamedQuery("findAll", "rcvr_mgr_value");

如果需要多个参数,您可以使用Object[]第二个参数来传递所有参数值的发生顺序。

于 2012-11-08T20:19:33.543 回答
1
public List<RcvrGroup> findAllErrorVar(String value){  
    return getHibernateTemplate().findByNamedQueryAndNamedParam("findAll", "rcvr_mgr", value);  
}
于 2012-11-08T20:20:27.150 回答