ERREUR: opérateur n'existe pas: entier = character varying, à l'aide de Postgresql 8.2

J'ai une application web Java EE développé dans une ancienne version d'Eclipse (Ganymède si je me souviens bien). J'ai récemment migré vers Kubuntu 12.04 LTS et à la migration de l'application Eclipse Kepler (que j'ai téléchargé et installé à partir du site web d'Eclipse). C'est à l'aide de Java Niveau de Conformité 1.6 et le conteneur cible est Tomcat 6.

Mon problème est que je reçois l'erreur:

org.postgresql.util.PSQLException: ERREUR: opérateur n'existe pas: entier = character varying

lorsque l'application rencontre une page avec un certain Postgres requête. Je suis à l'aide de la JSTL sql:query et sql:param balises pour mettre en œuvre une déclaration préparée à l'intérieur de la page jsp. Je sais que c'est considéré comme une mauvaise pratique, mais je ne suis pas l'auteur original et cette technique est utilisée tout au long de l'application.

L'erreur se produit en raison de tenter d'assigner une chaîne en entier dans le sql:balise param. Dans la configuration précédente tout casting qui s'est passé de manière transparente et il n'y a pas d'erreur. Avec la nouvelle installation, je reçois l'erreur.

J'ai lu que plus stricte de la conversion de type est introduite avec Postgres 8.3 qui serait la cause de cette erreur, mais je suis en utilisant le Postgresql 8.2 JDBC 4 fichier jar dans mon application, donc ça devrait marcher. Je suis perplexe. Peut-être quelqu'un a une idée?

Je suis tombé sur une solution de contournement, de multiplier la chaîne par 1 avant de faire la comparaison:

http://dev-answers.blogspot.co.uk/2010/08/type-coercion-in-jstl-for-sqlparam.html

Mais c'est un peu de bidouille et j'aurais beaucoup de pages à modifier. Mais il est universitaire, parce que je ne devrait pas le problème de toute façon.

Merci pour la lecture. Toute aide grandement appréciée.

OriginalL'auteur user2661243 | 2013-08-08