Я изучаю Spring JdbcTemplate - в котором я пытался вставить строку в таблицу (Oracle 18 c)
ниже приведена структура таблицы.
описать сотрудник;
![Table Description](https://i.stack.imgur.com/15hSW.png)
теперь я автоматически подключен (@Autowired) JdbcTemplate и со строкой ниже, записи могут быть вставлены.
jdbcTemp.update("INSERT INTO EMPLOYEE(NAME) VALUES(?)", new Object[] {emp.getName()} );
однако, когда я использовал интерфейс PreparedStatementCallback, результат был не таким, как ожидалось. пожалуйста, найдите ниже код.
@Autowired
JdbcTemplate jdbcTemp;
public void insertIntoDatabase(final Employee emp)
{
jdbcTemp.update("INSERT INTO EMPLOYEE(NAME) VALUES(?)", new PreparedStatementCallback<Boolean>() {
@Override
public Boolean doInPreparedStatement(PreparedStatement ps)
{
// TODO Auto-generated method stub
try {
//ps.setInt(1,emp.getId());
ps.setString(1, emp.getName());
// ps.setFloat(3,emp.getSalary());
return ps.execute();
}
catch(SQLException e)
{
e.printStackTrace();
return false;
}
catch(DataAccessException e)
{
e.printStackTrace();
return false;
}
}
});
}
ниже ошибка встречается при исполнении.
Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO EMPLOYEE(NAME) VALUES(?)]; SQL state [99999]; error code [17004]; Invalid column type; nested exception is java.sql.SQLException: Invalid column type
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1443)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:633)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:862)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:917)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:927)
at com.tvashtra.SpringBootDataOps.InsertIntoTableDemo.insertIntoDatabase(InsertIntoTableDemo.java:22)
at com.tvashtra.SpringBootDataOps.InsertIntoTableDemo$$FastClassBySpringCGLIB$$bb4c5941.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
at com.tvashtra.SpringBootDataOps.InsertIntoTableDemo$$EnhancerBySpringCGLIB$$a0211f9b.insertIntoDatabase(<generated>)
at com.tvashtra.SpringBootDataOps.SpringBootDataOpsApplication.main(SpringBootDataOpsApplication.java:31)
... 5 more
Заранее спасибо