6

DaoImpl クラスの HIbernate を使用してストアド プロシージャを実行しようとすると、以下の例外が発生します。何が問題なのかわかりません..すべての方法で修正しようとしましたが、問題は解決しませんでした. コードまたはマッピングファイルの何が問題なのかを理解してください。修正しようとすればするほど、例外が増えます.. Oracle 9i DB に接続しています。私は本当に2週間からこれに苦労しています..誰も私がこの問題を解決するのを手伝ってくれませんか.

マッピング ファイル:

<hibernate-mapping>

    <sql-query name="proc_drsrr_sel_ValDDSummaryBal">
    <!--CALL proc_drsrr_sel_ValDDSummaryBal(:param1)]]>-->
    { call DEFAULT_SCHEMA.proc_name(?,:param1) }

メインクラス:

public static void main(String[] args) {
        String procName = "proc_name";// args[0];
        String params = "param1:500089" ;

DAO の実装:

@SuppressWarnings("unchecked")
    public void callProc(String procName, Map paramMap) throws SQLException {
        Session session = null;
        Transaction tx = null;
        try {

            session = HibernateUtils.getSessionFactory().getCurrentSession();
            tx = session.beginTransaction();
            String dbURL = session.connection().getMetaData().getURL().toString();
            System.out.println("Conenction DB URL "+ dbURL );
            tx.setTimeout(5);
            String[] keys = new String[paramMap.size()];
            keys = (String[]) paramMap.keySet().toArray(keys);

            Query query = session.getNamedQuery(procName)
            .setParameter("param1", "5501010");

            }

            List result = query.list();
            System.out.println(query.getQueryString());
            for (int i = 0; i < result.size(); i++) {
                // logging the information.
                log.info(i);

            }
            tx.commit();
        } catch (RuntimeException exception) {
            exception.printStackTrace();
            try {
                tx.rollback();
            } catch (RuntimeException rbe) {
                log.error("Couldn’t roll back transaction", rbe);
                rbe.printStackTrace();
            }
            throw exception;
        } finally{   
                   if(session !=null){   
                      session.flush();      
                      session.close();      
            }

cfg.xml

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@ldap://hdsoid.ute.ovi.com:3060/UT1DEV,cn=OracleContext,dc=ute,dc=ovi,dc=com</property>
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.username">nameapp</property>
        <property name="connection.password">nameapp</property>
        <property name="connection.pool_size">1</property>   
        <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
       <!--   <property name="connection.release_mode">after_statement</property> -->
       <property name="default_schema">DEFAULT_SCHEMA</property>

        <property name="current_session_context_class">thread</property>
        <property name="hibernate.show_sql">true</property>
        <!-- mapping files -->
        <mapping resource="com/ovi/domain/hibernate.hbm.xml" />
    </session-factory>
</hibernate-configuration>
4

1 に答える 1

13

?いわゆる と呼ばれるパラメータを設定していませんpositional parameter。のような名前付きパラメーターとは対照的に:foo

SQL がある場合は、コメント内にクエスチョン マークが含まれていないことも確認する必要があります。それが私が遭遇したものです。:特にコメントの後にスペースが続く場合、同じことがコメントに当てはまります。

于 2014-02-03T11:45:32.300 に答える