hibernate namedQuery

时间:2012-11-08 20:14:54

标签: java spring hibernate named-query

我想将值传递给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");
}

现在,如果我有一个&#39;其中&#39;子句和我的查询如下所示:

<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>

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

2 个答案:

答案 0 :(得分: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[]作为第二个参数来传递正在发生的序列中的所有参数值。

答案 1 :(得分:1)

public List<RcvrGroup> findAllErrorVar(String value){  
    return getHibernateTemplate().findByNamedQueryAndNamedParam("findAll", "rcvr_mgr", value);  
}