0

私はnamedQueryスルーを持っており、以下のように2つのパラメーターを渡します。

ArrayList idName= new ArrayList();
     idName.add(id); --int
     idName.add(ABC); --String

そして、このオブジェクトを次のようにnamedQueryに渡します。

return getHibernateTemplate().findByNamedQuery("findIDAndName", idName);

そして私のhbm.xmlにはこのクエリがあります

  <sql-query name="findIDAndName">
      <return alias="IdNamePmt" class="com.app.Grp.model.IdNamePmt"/>
      <![CDATA[select * from PMT.CSE_NME_VW where PMT_ID=? and PMT_NAME=?]]>
    </sql-query>

アプリケーションを実行すると、次のエラーが発生します。

org.hibernate.QueryException: Expected positional parameter count: 2, actual parameters: [[7, ABC]] [select * from PMT.CSE_NME_VW where PMT_ID=? and PMT_NAME=?]
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:367)
    at org.hibernate.impl.SQLQueryImpl.verifyParameters(SQLQueryImpl.java:228)
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:172)

2つのパラメーターを渡しましたが、「where」句にも2つのパラメーターが必要です。なにが問題ですか?高く評価されている例はありますか?

4

1 に答える 1

0

そうあるべきだと思います

return getHibernateTemplate().findByNamedQuery("findIDAndName", idName.toArray());
于 2012-11-09T20:39:59.447 に答える