我有一个在旧版本的 Eclipse 中开发的 Java EE Web 应用程序(如果我没记错的话是 Ganymede)。我最近迁移到 Kubuntu 12.04 LTS 并将应用程序迁移到 Eclipse Kepler(我从 Eclipse 网站下载并安装了它)。它使用 Java Compliance Level 1.6,目标容器是 Tomcat 6。
我的问题是我现在收到错误:
org.postgresql.util.PSQLException:错误:运算符不存在:整数 = 字符变化
当应用程序遇到包含某个 Postgres 查询的页面时。我正在使用 JSTL sql:query 和 sql:param 标签在 jsp 页面中实现准备好的语句。我知道这被认为是不好的做法,但我不是原作者,并且在整个应用程序中都使用了这种技术。
由于尝试将字符串分配给 sql:param 标记中的整数而发生错误。在之前的设置中,任何转换都是透明地发生的,并且没有错误。使用新设置,我收到错误。
我读到 Postgres 8.3 引入了更严格的类型转换,这会导致此错误,但我在我的应用程序中使用 Postgres 8.2 JDBC 4 jar 文件,因此它应该可以工作。我难住了。也许有人有想法?
我遇到了一种解决方法,在进行比较之前将字符串乘以 1:
http://dev-answers.blogspot.co.uk/2010/08/type-coercion-in-jstl-for-sqlparam.html
但这有点杂乱无章,我需要修改很多页面。但这是学术性的,因为无论如何我都不应该遇到这个问题。
谢谢阅读。非常感谢任何帮助。