lealone / Lealone

比 MySQL 和 MongoDB 快10倍的 OLTP 关系数据库和文档数据库
Other
2.48k stars 519 forks source link

LocalDateTime 值变成 aced00057372000d #240

Closed cbqqkcel closed 1 month ago

cbqqkcel commented 2 months ago

image

image

如果我注释调 .updatedAt(now) 这行代码就能更新成功。

cbqqkcel commented 2 months ago

用SQL 管理工具可以查询出来数据,日期是正常的。在代码里面就是null 是不是我的 orm 框架不支持。mysql 的是可以查出来的

cbqqkcel commented 2 months ago

image newRow 里面的值还是正常的

cbqqkcel commented 2 months ago

image 嵌入式下可以可以使用同步吗,由于是异步我无法从mybatis中debug过来

cbqqkcel commented 2 months ago

image

JdbcPreparedStatement 不支持 LocalDateTime

Mybatis LocalDateTimeTypeHandler 是直接调用 ps.setObject 了,最后到 DataType.convertToValue 中是不支持LocalDateTime 的

codefollower commented 2 months ago

java.time 包中的日期时间还不支持,所以转换时会有问题。

cbqqkcel commented 2 months ago

如果要支持的话还得支持 LocalDateTime LocalDate LocalTime 这几个。 1.8 后不推荐使用 java.util.Date 了。

codefollower commented 2 months ago

image 嵌入式下可以可以使用同步吗,由于是异步我无法从mybatis中debug过来

嵌入模式下真正执行 sql 语句的线程是 EScheduleService 线程,mybatis 的线程调用到 jdbc 的 api 时,只是把 sql 提交给EScheduleService 线程执行,所以无法在 mybatis 的线程里一路 debug 所有代码的。

codefollower commented 2 months ago

如果要支持的话还得支持 LocalDateTime LocalDate LocalTime 这几个。 1.8 后不推荐使用 java.util.Date 了。

下一个小版本再看看如何支持 java.time 包中的日期时间,H2 数据库确实支持挺长一段时间了

codefollower commented 2 months ago

不管是嵌入模式还是 client-server 模式,lealone 的内核代码都是由 lealone 内部的调度服务线程执行,外部线程无法也不给执行内核代码。

codefollower commented 2 months ago

Lealone 的 JDBC 客户端已经支持 LocalDate、LocalTime、LocalDateTime,其他 java.time 类型还不支持。

通过 setObject/getObject 来使用,具体用法可以参考 JSR310JavaTimeTest