【发布时间】:2017-02-23 08:20:18
【问题描述】:
几天前,在添加新的接口实现后,我在代码中发现了一些奇怪的行为。
我看到 mybatis update 总是返回 -1,并且 table 没有更新。
日志告诉我一些有趣的行为:- 创建新的 SqlSession
- SqlSession [...] 未注册同步,因为同步未激活
- JDBC 连接 [...] 不会由 Spring 管理
- ==> 准备中:更新 Card set amount=isnull(?, amount), name=isnull(?, name), balanceTime=isnull(?, balanceTime) where 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,对于它,一切正常。
如果我将“金额”字段类型更改为 Double,一切正常。
如果我离开 BigDecimal 类型并将 "amount=isnull(#{card.amount}, amount)" 替换为 "amount=#{card.amount}" 或类似 "amount=isnull(0.00, amount)" 所有工作正常,在日志中我看到:
- ==> 参数:0.0(BigDecimal), ....
请帮我理解为什么会这样。
【问题讨论】:
标签: java mybatis bigdecimal isnull