I want to pass values to a NamedQuery. I am selecting from a view and my namedQuery in xml file looks like this:

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

and in my DAO I just use findByNamedQuery

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

Now, if i have a 'where' clause and my query looks like this:

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

How will I execute and pass the values which returns list?

有帮助吗?

解决方案

Change the query to use place holder ? e.g.

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

And then pass the value as second parameter.

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

If need more than one parameters, you may use Object[] as second parameter to pass the all parameter values in occurring sequence.

其他提示

public List<RcvrGroup> findAllErrorVar(String value){  
    return getHibernateTemplate().findByNamedQueryAndNamedParam("findAll", "rcvr_mgr", value);  
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top