alibaba / SmartEngine

SmartEngine is a lightweight business orchestration engine.
Apache License 2.0
760 stars 216 forks source link

Hotfix type conversion exception #28

Closed JannLim closed 3 years ago

JannLim commented 3 years ago
  1. request参数中提取信息进行强转,导致类型转换异常修复 2.关系型数据库修改assigneeId转换long引发错误
CLAassistant commented 3 years ago

CLA assistant check
All committers have signed the CLA.

vavi commented 3 years ago

首先,很欢迎pull request 哈。 我有几个疑问,一起讨论下:

  1. ObjUtil.obj2Str 没看出来为什么用这么用
  2. @Param("assigneeId")Long assigneeId 这个建议在业务层完成转换,DAO层就不需要Long#valueOf了。
JannLim commented 3 years ago

1.ObjUtil.obj2Str 没看出来为什么用这么用 答:这个地方是为了将Object强转为String替换掉用的,出现问题原因是这样的,由于参数允许传入的是Object类型,所以,业务系统中会传入除String以外的其他类型,例如Integer、Long等,这个时候String的强转会出现类型转换异常。不用String.valueOf进行转换是因为String.valueOf源码中,如果obj==null会给出"null"这个结果,也就是业务中明明没有传递参数,却被记录了参数传了"null"字符串,也会引发一些问题,所以ObjUtil.obj2Str这里为了解决这两个问题这么写的。 2.@param("assigneeId")Long assigneeId 这个建议在业务层完成转换,DAO层就不需要Long#valueOf了。 这个参数实际上不需要进行long类型的转换,在数据库中assignee_id的类型是varchar,所以在想这个地方直接给string就可以了,也可以避免由于业务中设置的assignee_id就是字符串而引发的错误