Day ago I found something strange behavior in my code after adding new implementation of interface.
I see mybatis update return -1 always, and table not updated.
Log told me about some interesting behavior:- Создание нового SqlSession
- SqlSession [...] не был зарегистрирован для синхронизации, поскольку синхронизация не активна
- JDBC Connection [...] не будет управляться Spring
- ==> Подготовка: обновить количество наборов карт = isnull(?, сумма), name=isnull(?, name), balanceTime=isnull(?, balanceTime) где number=? и clientId=?.
- ==> Параметры: 0.00(BigDecimal), Test Card(String), 2017-02-22 09:05:24.78(Timestamp), 0000000000000000(String), 111000(Long)
- Закрытие нетранзакционного SqlSession [...]
После отправки параметров на сервер ничего не произошло. Это происходит после рефакторинга моего DAO:
public class DBaseCard{
private long id;
private String number;
private String name;
private BigDecimal amount; // was Double
.....
}
В производстве я использую Sybase IQ. Для теста я использую H2 db, и для него все работает нормально.
Если я изменю тип поля «сумма» на «Двойной», все будет работать нормально.
Если я оставлю тип BigDecimal и заменю «количество = isnull (# {card.amount}, сумма)» на «количество = # {card.amount}» или что-то вроде «сумма = isnull (0,00, сумма)», все работает нормально, а в логе вижу:
- ==> Параметры: 0.0(BigDecimal), ....
- ‹== Обновлений: 1
Пожалуйста, помогите мне понять, почему это происходит.