0

私は春のフレームワークが初めてで、理解するために最善を尽くしています。操作に Spring NamedParameterJDBC テンプレートを使用しています

私はDAOでこのコードを持っています

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

問題は、実行時にこのエラーが発生することです

 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;

私がグーグルで調べたところ、これは自動生成されたキーを送信しない ojdbc14 のような古い Ojdbc ドライバーの問題であることがわかりました。現在、Spring または同じ操作を行う他の方法で最新の ojdbc ドライバーをロードする方法を見つけることができません。

spring-jdbc にはデフォルトの ojdbc ドライバーがあると想定しています。私は正しいですか?プロジェクトに他のドライバーを追加しなかったためです。

--> 自動生成キーがなければ、プロセス全体が正常に機能します。

4

1 に答える 1

3

Javaとojdbcのバージョンが一致していない可能性があります。JDBCはJavaSEの一部であるため、JavaSEバージョンとojdbcバージョンが一致している必要があります。

ojdbc14→Java1.4

ojdbc5→Java1.5

ojdbc6→Java1.6

ojdbcドライバーがJavaSEバージョンよりも新しい場合でも、問題なく動作するはずです。Oracle JDBCドライバーは、 OracleDownloadページから入手でき ます。残念ながら、Mavenセントラルではそれらを見つけることができないため、Mavenリポジトリに手動でデプロイする必要があります。

ojdbcドライバーの依存関係を検索する場合は、

mvn dependency:tree

そこになく、アーティファクト(WARまたはEAR)と一緒にパッケージ化されていない場合は、アプリケーションサーバーなどからのものである可能性があります。

于 2012-07-11T16:19:13.037 に答える