Frage

Ich benutze Spring's SimpleJDBCTemplate Sozug auf Oracle DB. Hier ist mein Code.

String sql = "SELECT from_bin_code FROM hbin_import_mapping";
return jt.query(sql, new BeanHbinImportMappingMapper(), (Object) null);

Der Zeilen -Mapper ist:

public class BeanHbinImportMappingMapper
    implements
        RowMapper<BeanHbinImportMapping> {
    public BeanHbinImportMapping mapRow(ResultSet rs, int rowno)
        throws SQLException {
        int fromBinCode = rs.getInt("from_bin_code");
//        char fromBinCodeChar = rs.getString("from_bin_code_char").charAt(0);
//        boolean fromBinCodeAllowed = rs.getString("from_bin_code_allowed")
//            .equals("Y") ? true : false;
//        int oliBinCode = rs.getInt("oli_bin_code");
//        String oliBinQuality = rs.getString("oli_bin_quality");
//        String oliBinGroup = rs.getString("oli_bin_group");
//        String oliBinDesc = rs.getString("oli_bin_desc");
//        boolean olibinRef = rs.getString("oli_bin_ref").equals("Y") ? true
//            : false;

        BeanHbinImportMapping bean = new BeanHbinImportMapping(fromBinCode);
//      BeanHbinImportMapping bean = new BeanHbinImportMapping(1, 'c', true);
        return bean;
    }
}

Der SQL wird geprüft.

Ausnahmestapelspur:

javax.servlet.ServletException: org.springframework.jdbc.InvalidResultSetAccessException: PreparedStatementCallback; invalid ResultSet access for SQL [SELECT from_bin_code FROM hbin_import_mapping]; nested exception is java.sql.SQLException: Invalid column index
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


root cause 

org.springframework.jdbc.InvalidResultSetAccessException: PreparedStatementCallback; invalid ResultSet access for SQL [SELECT from_bin_code FROM hbin_import_mapping]; nested exception is java.sql.SQLException: Invalid column index
    org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:237)
    org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
    org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:602)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:665)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:673)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:713)
    org.springframework.jdbc.core.simple.SimpleJdbcTemplate.query(SimpleJdbcTemplate.java:200)
    com.st.mas.wmr.persistence.atom.AtomStifOliBinConversion.getLoaderMatrix(AtomStifOliBinConversion.java:52)
    com.st.mas.wmr.persistence.process.ProcessStifOliBinConversion.getLoaderMatrix(ProcessStifOliBinConversion.java:50)
    com.st.mas.wmr.action.StifBinConversionAction.viewLoaderMapping(StifBinConversionAction.java:35)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:585)
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
    com.st.mas.wmr.action.AnyDispatchAction.execute(AnyDispatchAction.java:107)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


root cause 

java.sql.SQLException: Invalid column index
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:226)
    oracle.jdbc.driver.OraclePreparedStatement.setNullInternal(OraclePreparedStatement.java:3661)
    oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:3652)
    org.apache.commons.dbcp.DelegatingPreparedStatement.setNull(DelegatingPreparedStatement.java:108)
    org.apache.commons.dbcp.DelegatingPreparedStatement.setNull(DelegatingPreparedStatement.java:108)
    org.springframework.jdbc.core.StatementCreatorUtils.setNull(StatementCreatorUtils.java:252)
    org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:213)
    org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:144)
    org.springframework.jdbc.core.ArgPreparedStatementSetter.doSetValue(ArgPreparedStatementSetter.java:65)
    org.springframework.jdbc.core.ArgPreparedStatementSetter.setValues(ArgPreparedStatementSetter.java:46)
    org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:641)
    org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:586)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:665)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:673)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:713)
    org.springframework.jdbc.core.simple.SimpleJdbcTemplate.query(SimpleJdbcTemplate.java:200)
    com.st.mas.wmr.persistence.atom.AtomStifOliBinConversion.getLoaderMatrix(AtomStifOliBinConversion.java:52)
    com.st.mas.wmr.persistence.process.ProcessStifOliBinConversion.getLoaderMatrix(ProcessStifOliBinConversion.java:50)
    com.st.mas.wmr.action.StifBinConversionAction.viewLoaderMapping(StifBinConversionAction.java:35)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:585)
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
    com.st.mas.wmr.action.AnyDispatchAction.execute(AnyDispatchAction.java:107)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Vielen Dank.

War es hilfreich?

Lösung

Sie übergeben Parameter (in diesem Fall NULL) und die Abfrage hat keine Abfrageparameter ... entweder einem Parameter zur Abfrage hinzufügen oder den Parameter aus dem Methodenaufruf entfernen.

http://forum.springource.org/showthread.php?t=108788

Danke Martin Deinum

Andere Tipps

** RowMapper **

  • Der Vorteil der Verwendung dieser Schnittstelle besteht darin, jede Zeile auf ein Ergebnisobjekt zuzuordnen. Maprow () Diese Methode sollte nicht als Next () im Ergebnisabruf aufrufen. Es soll nur Werte der aktuellen Zeile abbilden. und Rückgabeliste von Objekten.*

applicationConttext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/yash" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>

    <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>
<bean id="empdao" class="gmail.daos.EmpDao">
        <property name="jt" ref="jt"/>
</bean>
  • Dao -Klasse *

    public class EmpDao {
        private JdbcTemplate jt;
    public List<EmpDto> listEmpoyees(){
     String sql = "select * FROM emp";
      List<EmpDto> emplist = jt.query(sql, new RowMapper() {
    
                    public EmpDto mapRow(ResultSet rs, int rowNum) throws SQLException {
                        EmpDto emp = new EmpDto();
    
                        emp.setId(rs.getInt("id"));
                        emp.setName(rs.getString("name"));
                        emp.setAge(rs.getInt("age"));
                        emp.setSalary(rs.getInt("salary"));
                        emp.setAddress(rs.getString("address"));
    
                        System.out.println("***");
    
                        return emp;
                    }
    
                });      
                return emplist;
    }}
    

Wenn Sie auf diese Weise verwenden, ist dies keine Wiederversuchexecption.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top