在BATCH_JOB_EXECUTION_PARAMS表中,“STRING_VAL”列定义为varchar(250)。如果任何超过250的字符串作为作业参数传递,数据库将抱怨数据太长。我做了一些研究,有些人做的是手动更改列的定义以容纳更多数据。在桌子上存放大型参数是否有任何副作用?如果是这样,传递大型工作参数的最佳解决方案是什么?
感谢。
答案 0 :(得分:2)
不应该是副作用;特别是,如果它是一个非识别参数。
但同时,唯一可以产生副作用的地方是在JOB_INSTANCE表中生成" JOB_KEY" -field(查看JdbcJobInstanceDao)。
该字段的内容是使用" JobKeyGenerator"生成的。并查看使用过的默认实现" org.springframework.batch.core.DefaultJobKeyGenerator",我没有看到任何可能导致副作用的内容。
答案 1 :(得分:1)
我不会走这条路,因为它是你控制之外开发的Spring Framework的一部分。即使现在更安全,如果他们决定在一些重要的框架功能中使用250个字符限制。升级到新版本时,您将获得有趣的错误,或者您自己更改了库代码后将获得版本锁定。
我在post中回答了类似的问题。您可以创建新表来保存参数或Spring Batch元数据附近的任何内容(在同一个数据库中),您可以只传递ID。在Spring Batch作业中,您可以根据传递的ID从该表中提取任何内容。