プロジェクトを最新の spring および hibernate リリース (spring 3.2.1 および hibernate 4.1.9) にアップグレードしましたが、互換性がないようです。変更の 1 つは、Spring の jdbc フレームワークの一部です。
public <T> T execute(StatementCallback<T> action) throws DataAccessException {
Assert.notNull(action, "Callback object must not be null");
Connection con = DataSourceUtils.getConnection(getDataSource());
Statement stmt = null;
try {
Connection conToUse = con;
if (this.nativeJdbcExtractor != null &&
this.nativeJdbcExtractor.isNativeConnectionNecessaryForNativeStatements()) {
conToUse = this.nativeJdbcExtractor.getNativeConnection(con);
}
stmt = conToUse.createStatement();
applyStatementSettings(stmt);
Statement stmtToUse = stmt;
if (this.nativeJdbcExtractor != null) {
stmtToUse = this.nativeJdbcExtractor.getNativeStatement(stmt);
}
T result = action.doInStatement(stmtToUse);
handleWarnings(stmt);
return result;
}
catch (SQLException ex) {
// Release Connection early, to avoid potential connection pool deadlock
// in the case when the exception translator hasn't been initialized yet.
JdbcUtils.closeStatement(stmt);
stmt = null;
DataSourceUtils.releaseConnection(con, getDataSource());
con = null;
throw getExceptionTranslator().translate("StatementCallback", getSql(action), ex);
}
finally {
JdbcUtils.closeStatement(stmt);
DataSourceUtils.releaseConnection(con, getDataSource());
}
Hibernate 4.1.9 は jdbc ステートメントをプロキシするようになり、例外コンバーターが開始され、チェックされた例外ではなく実行時例外がスローされます。たとえば、SQLException の代わりに実行時例外がスローされるようになりました - SQLGrammerException。
春はおそらくこの休止状態の変更を処理する必要がありますよね?
編集
Hibernate フォーラム、Hibernate Jira フォーラム、開発メーリング リストで議論しました。彼らは、これがメジャー リリース (4.x) であるため、このような互換性の問題が予想されると主張しています。問題を解決するためにコードを更新するようクライアントに依頼します。
春のジラ フォーラムに同じ問題を投稿しましたが、現在議論中です。
他の人がこの問題にどのように取り組んでいるのだろうか!