我有一个用旧版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
但这有点像kludge,我会有很多页面需要修改.但它是学术性的,因为无论如何我不应该遇到这个问题.
谢谢阅读.任何帮助非常感谢.