当前使用版本(必填,否则不予处理)
3.5.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
使用3.5.3测试依旧有问题,需要将时间或日期字段设置null
重现步骤(如果有就写完整)
1、数据库使用Sql Server 2022 2、随便创建一张表,设置一个日期字段,类型为date,一个时间字段,类型为datetime,一个类型为datetime2 3、@TableField(updateStrategy = FieldStrategy.IGNORED)设置允许为null 4、updateById方法修改
报错信息
1、
2、
3、
Comment From: miemieYaho
你要看你执行的sql是什么
Comment From: IvesQing
执行update语句:UPDATE resource_order SET order_no='20230322002', order_type=10, order_quantity=12, corr_type='BC', length=712, width=262, height=139, bord_len=121, bord_width=377, process_status='70', finish_time=null, has_file=10, has_ai=10, order_date='2023-03-23', box_type_name='普通箱', custom_order_no='三方平台同步-769', custom_name='模拟第三方', part_no='', part_name='临时物料', part_spec='712262*139', print_layout_type='10', remark=NULL, org_id=1000, rec_ver=2, creator=-1, create_name='自动生成', create_time='2023-03-22T12:03:35', modifier=NULL, modify_name=NULL, modify_time='2023-03-22T14:29:27' WHERE id=1 AND rec_ver=1 AND rec_status=0;
就是把finish_time设置为nul。
Comment From: uniquejava
类似的问题, 对 datetime2 的支持不好..
版本: SQL Server 2022
如果在 SQL Server 中我的 updatedDate 字段设置为 datetime2 类型, java 这边如果使用了 FieldFill
Entity 类 如下:
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updatedAt;
MetaObjectHandler.java 如下
this.strictUpdateFill(metaObject, "updatedAt", LocalDateTime.class, LocalDateTime.now());
则会报错:
Implicit conversion from data type varbinary to datetime2 is not allowed.
Comment From: miemieYaho
类似的问题, 对 datetime2 的支持不好..
版本: SQL Server 2022
如果在 SQL Server 中我的 updatedDate 字段设置为
datetime2类型, java 这边如果使用了FieldFillEntity 类 如下:
java /** * 更新时间 */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt;MetaObjectHandler.java 如下
java this.strictUpdateFill(metaObject, "updatedAt", LocalDateTime.class, LocalDateTime.now());则会报错:
Implicit conversion from data type varbinary to datetime2 is not allowed.
你这是驱动问题,和自动填充没关系