我正在使用MyBatis和Oracle 11g R2數據庫。我正在使用MyBatis 3.3和ojdbc6 12.1.0.2。我的問題是每當我試圖插入一個空的對象,我得到以下。MyBatis - jdbcTypeForNull Oracle
org.springframework.jdbc.UncategorizedSQLException:錯誤設置爲null 的參數#8的jdbcType其他。嘗試爲此參數設置不同的 JdbcType或設置不同的jdbcTypeForNull 配置屬性。原因:值java.sql.SQLException:無效的列 類型:1111
我的理解是在最新版本的JDBC空的映射到的,但並不是所有的驅動程序處理JdbcType.OTHERS,顯然甲骨文就是其中之一。
我在我的MyBatis配置中嘗試了以下,但仍然沒有運氣。
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage("org.ohtech.innovationexchange.core.domain");
sessionFactory.setTransactionFactory(springManagedTransactionFactory());
sessionFactory.setConfigurationProperties(getProperties());
return sessionFactory.getObject();
}
@Bean(name = "transactionManager")
public DataSourceTransactionManager dataSourceTransactionManager() throws PropertyVetoException{
return new DataSourceTransactionManager(dataSource());
}
@Bean
public SpringManagedTransactionFactory springManagedTransactionFactory() {
return new SpringManagedTransactionFactory();
}
private Properties getProperties() {
final Properties myBatisProperties = new Properties();
myBatisProperties.put("jdbcTypeForNull", "NULL");
return myBatisProperties;
}
我可以通過在我的映射器文件中執行以下操作使其工作,但它看起來確實重複和醜陋。不知道爲什麼MyBatis不使用我的屬性我傳遞SqlSessionFactory bean。
[MyBatis的ORA-01745的可能重複:無效的主機/綁定變量名稱](http://stackoverflow.com/questions/32081980/mybatis-ora-01745-invalid-host-bind-variable-name) – Andreas