2012-07-11 4 views
0

Je suis novice dans le domaine des ressorts et je fais de mon mieux pour comprendre. J'utilise modèle Spring NamedParameterJDBC pour mes opérationsPrintemps JDBC et pilote Oracle Db Connexion

J'ai ce code dans DAO

SqlParameterSource paramSource = new BeanPropertySqlParameterSource(
      positionDO); 
KeyHolder keyHolder = new GeneratedKeyHolder(); 
return this.jdbcTemplate.update(sql, paramSource, keyHolder); 

Le problème est quand j'exécute, je reçois cette erreur

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL 
[INSERT INTO POSITION_TABLE VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [null]; 
error code [0]; 
java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection.prepareStatement(Ljava/lang/String;I) 
Ljava/sql/PreparedStatement; 

I googlé et trouvé que c'est un problème avec les vieux pilotes Ojdbc comme ojdbc14 qui n'envoient pas de clés générées automatiquement. Maintenant, je suis incapable de trouver quoi faire pour charger le dernier pilote ojdbc par Spring OU tout autre moyen de faire la même opération.

Je suppose que spring-jdbc aura un pilote ojdbc par défaut. Ai-je raison? Parce que je n'ai pas ajouté d'autres pilotes à mon projet.

-> Sans clé de génération automatique, tout le processus fonctionne correctement.

+0

Comment sont gérées les dépendances de votre projet? Est-ce un projet de fourmis, un projet Maven, un projet Eclipse? – Olaf

+0

maven. et dans pom.xml je ne peux pas voir de dépendance de pilote, mais c'est une connexion à DB. Le printemps a-t-il des pilotes intégrés ou quelque chose qui manque? – Reddy

Répondre

3

Il est probable que vos versions Java et ojdbc ne correspondent pas. Puisque JDBC fait partie de JavaSE, votre version JavaSE et votre version ojdbc doivent correspondre.

ojdbc14 → Java 1.4

ojdbc5 → Java 1.5

ojdbc6 → Java 1.6

Si votre pilote ojdbc est plus récent que vos versions JavaSE alors les choses devraient encore travailler. Vous pouvez obtenir le pilote Oracle JDBC à partir du Oracle Download page. Malheureusement, vous ne les trouverez pas dans Maven central, vous devrez donc les déployer manuellement dans votre dépôt Maven.

Si vous voulez rechercher votre utilisation de dépendance du pilote ojdbc

mvn dependency:tree 

Si ce n'est pas là et pas emballé avec votre artefact (WAR ou EAR), il vient probablement de votre serveur ou similaire application.