Java 使用“弹簧批处理”随进度求解最大长度或精度

Java 使用“弹簧批处理”随进度求解最大长度或精度,java,spring,spring-batch,openedge,progress-db,Java,Spring,Spring Batch,Openedge,Progress Db,我使用的是SpringBatch,我需要从使用进度数据库的遗留系统中查询数据 但是,我遇到了此异常java.sql.SQLException:[DataDirect][OpenEdge JDBC Driver][OpenEdge]表PUB中的列Ag Obs conf。Agenda的值超过了其最大长度或精度 我可以使用select中的SUBSTR部分解决这个问题,但我需要数据库中的所有数据 我不能以任何方式更改数据库 谁能告诉我怎么解决这个问题 谢谢OpenEdge数据库将所有数据存储为可变长度。

我使用的是SpringBatch,我需要从使用进度数据库的遗留系统中查询数据

但是,我遇到了此异常java.sql.SQLException:[DataDirect][OpenEdge JDBC Driver][OpenEdge]表PUB中的列Ag Obs conf。Agenda的值超过了其最大长度或精度

我可以使用select中的SUBSTR部分解决这个问题,但我需要数据库中的所有数据

我不能以任何方式更改数据库

谁能告诉我怎么解决这个问题


谢谢

OpenEdge数据库将所有数据存储为可变长度。应用程序通常会在声明的“SQL宽度”属性之外添加“oversuff”字段,这是导致您看到的错误的原因

在OpenEdge 11.6之前,使用dbtool是调整SQL宽度的标准方法。它快速、安全、有效:

从OpenEdge 11.6版开始,引入了一个新的数据库启动参数:

-SQLWidthUpdateon

它可以自动修复字符数据类型的SQL宽度

有关此新功能的更多信息,请参见:

如果您喜欢,11.6+中还有一些选项可以自动截断返回的数据:


它可能会工作,但我无法访问数据库。通过代码,我可以解决这个问题吗?您通常会要求DBA运行dbtool——在SQL与OpenEdge数据库一起使用的任何地方,它都应该是一个例行过程。如果本地管理员拒绝,那么您可以使用SUBSTR方法解决这个问题,或者,如果db是11.6或更高版本,则可以按照最后一个链接中的JDBC配置说明进行操作。