Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Expected positional parameter count: 1, actual parameters: []

Tags:

java

hibernate

I am getting this below exception when I am trying to execute a Stored procedure using HIbernate from DaoImpl Class. I am not sure of what is wrong ..I tried all the ways to fix it but did not resolve the issue. Could anyone please help me ,figure out whats wrong with the code or the mapping file. The more I am trying to fix ,something the more exceptions I am getting.. I am connectuing to Oracle 9i DB. I am struggling on this from really 2 weeks ending up no where.. can anyone please help me fix this issue.

Mapping file:

<hibernate-mapping>

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

Main-Class:

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

DAO Implementation:

@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>
like image 802
user2005493 Avatar asked Jan 23 '13 21:01

user2005493


1 Answers

You are missing to set the ? parameter which is a so called positional parameter. In contrast to named parameters like :foo

When you have some SQL you must also ensure not to have any Question Marks inside comments! That's what I just ran into. Same holds for : in comments, especially if they are followed by a space.

like image 199
Tarion Avatar answered Oct 28 '22 20:10

Tarion