2012-11-08 74 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); 
}