2012-06-01 65 views
0

我的錯誤彈簧的JdbcTemplate:在組空指針異常值

java.lang.NullPointerException. 
MyDAO$2.setValues 
    org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:680) 
    org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:454) 
    org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:676) 
    org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:738) 

net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) 
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:694) 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122) 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:639) 

我的代碼是

 this.jdbcTemplate.update(SOME_SQL_UPDATE, new PreparedStatementSetter() { 
        public void setValues(PreparedStatement ps) throws SQLException { 
         ps.setBoolean(1, myObj.isVal1()); 
         ps.setString(2, myObj.getVal2().toString()); 
        } 
       }); 

public class myObj { 
    private boolean val1; 
    private Enum val2; 
} 

我的布爾分貝列數是(1,0)和我的組字符串列是VARCHAR 。

注:我使用Spring 1.2的,現在升級到彈簧3

出了什麼問題?

我該如何解決這個問題?

回答

1

您確定myObj不爲空?看起來它可能是該語句中唯一可能爲空的對象。你可以對方法內的對象進行簡單的空檢查來確認嗎?

+0

myObj不爲null –

+1

myObj.val2也可以爲null,在調用toString()時可能會拋出NPE。 – matts

0

在您的班級myObj中,val1val2的值從未初始化。

+0

他們正在其他地方起步。 –