2012-11-08 28 views
0

我想将值传递给NamedQuery。 我从一个视图中选择和我的xml文件namedQuery看起来是这样的:hibernate 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"); 
} 

现在,如果我有一个“其中”条款和我的查询是这样的:

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

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

回答

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
public List<RcvrGroup> findAllErrorVar(String value){ 
    return getHibernateTemplate().findByNamedQueryAndNamedParam("findAll", "rcvr_mgr", value); 
}