|
|
|
Проблема с MyBatis
|
|||
|---|---|---|---|
|
#18+
Добрый день Использую MyBatis для работы с БД. При запуске на дев среде все работает, а когда переношу на продакш все время получаю следующую ошибку: автор### Error querying database. Cause: java.lang.NumberFormatException ### The error may exist in com/savvymoney/dailyregistration_nf/conf/ProMapper.xml ### The error may involve com.savvymoney.dailyregistration_nf.mapper.ProDbMapper.getProductionMembers ### The error occurred while handling results ### SQL: SELECT .... ### Cause: java.lang.NumberFormatException at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102) ~[mybatis-3.2.8.jar:3.2.8] at com.savvymoney.dailyregistration_nf.service.ReportService.reportCollector(ReportService.java:60) ~[daily_registaration-1.0-SNAPSHOT.jar:na] at com.savvymoney.dailyregistration_nf.service.ReportService.getReport(ReportService.java:48) ~[daily_registaration-1.0-SNAPSHOT.jar:na] at com.savvymoney.dailyregistration_nf.service.ReportService.getJRDataSource(ReportService.java:29) ~[daily_registaration-1.0-SNAPSHOT.jar:na] at com.savvymoney.custom_datasource.SavvyMoneyQueryExecutor.createDatasource(SavvyMoneyQueryExecutor.java:37) [sm-custom-datasource-1.0.jar:na] at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1119) [jasperreports-6.0.0.jar:6.0.0] at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:691) [jasperreports-6.0.0.jar:6.0.0] at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:434) [jasperreports-6.0.0.jar:6.0.0] at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:508) [jasperreports-6.0.0.jar:6.0.0] at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:120) [jasperreports-6.0.0.jar:6.0.0] at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:882) [jasperserver-api-engine-impl-6.0.1.jar:na] at net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:165) [jasperreports-6.0.0.jar:6.0.0] at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$AsynchronousReportFiller.fillReport(EngineServiceImpl.java:838) [jasperserver-api-engine-impl-6.0.1.jar:na] at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1727) [jasperserver-api-engine-impl-6.0.1.jar:na] at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1082) [jasperserver-api-engine-impl-6.0.1.jar:na] at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1011) [jasperserver-api-engine-impl-6.0.1.jar:na] at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:904) [jasperserver-api-engine-impl-6.0.1.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_80] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_80] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80] Caused by: java.lang.NumberFormatException: null at java.math.BigDecimal.<init>(BigDecimal.java:470) ~[na:1.7.0_80] at java.math.BigDecimal.<init>(BigDecimal.java:739) ~[na:1.7.0_80] at org.mariadb.jdbc.internal.common.AbstractValueObject.getInt(AbstractValueObject.java:109) ~[mariadb-java-client-1.1.2.jar:na] at org.mariadb.jdbc.MySQLResultSet.getInt(MySQLResultSet.java:140) ~[mariadb-java-client-1.1.2.jar:na] at org.mariadb.jdbc.MySQLResultSet.getInt(MySQLResultSet.java:144) ~[mariadb-java-client-1.1.2.jar:na] at org.apache.ibatis.type.IntegerTypeHandler.getNullableResult(IntegerTypeHandler.java:37) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.type.IntegerTypeHandler.getNullableResult(IntegerTypeHandler.java:26) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:55) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getPropertyMappingValue(DefaultResultSetHandler.java:393) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyPropertyMappings(DefaultResultSetHandler.java:367) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:341) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:294) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:269) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:239) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:153) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:60) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:60) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77) ~[mybatis-3.2.8.jar:3.2.8] at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108) ~[mybatis-3.2.8.jar:3.2.8] И на дев среде и на продакш использую ту самую БД, запрос, код, версию MyBatis 3.2.8 Не могу понять где проблема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2016, 18:18 |
|
||
|
Проблема с MyBatis
|
|||
|---|---|---|---|
|
#18+
denis111111, авторCaused by: java.lang.NumberFormatException: null Приходит null из базы скорее всего и падает конвертор для этой колонки. С уважением, Валентин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2016, 20:49 |
|
||
|
Проблема с MyBatis
|
|||
|---|---|---|---|
|
#18+
Решение нашел. MyBatis почему-то не мог коректно замапить BIT(Mysql) значение к Integer. Пришлось писать typeHandler для этого поля в энтити Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Суть в том что в БД нет NULL значений и как этот NULL пробирался в MyBatis не могу понять. Может другая версия драйвера jdbc по другому обрабатывает BIT значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2016, 13:44 |
|
||
|
Проблема с MyBatis
|
|||
|---|---|---|---|
|
#18+
Я так думаю, что исходные данные, в Java объекте (параметре) у вас в виде строки (java.lang.String). У вас не NULL идет в базу, а пустая строка, которая не может преобразоваться в числовое представление. В этом случае вам надо написать свой вариант TypeHandler. И в операторах @Insert, @Update, @Select указать #{field, jdbcType=NUMERIC, jdbcHandler=com.myapp.MyDataHandler} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2016, 16:19 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39346193&tid=2123490]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 335ms |

| 0 / 0 |
