2017-05-30 6 views
0

次のコードを使用して、結果セットからデータを抽出しています。私はコンパイルエラーを取得されています。私の研究hereあたりとしてSqlRowSetResultSetExtractorのextractDataは戻り値の型としてSqlRowSetを想定していますか?

The return type is incompatible with SqlRowSetResultSetExtractor.extractData(ResultSet) Change return type of extractData(...) to SqlRowSet

package uk.co.company.security.SQL; 

import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.dao.DataAccessException; 
import org.springframework.jdbc.core.SqlRowSetResultSetExtractor; 

import uk.co.company.security.User; 

public class UserExtractor extends SqlRowSetResultSetExtractor { 
private static final Logger logger = 
LoggerFactory.getLogger(UserExtractor.class); 

public Object extractData(ResultSet rs) throws SQLException, DataAccessException { 

    return null; 
} 
} 

、それはOKだったはずです。これは私の前にspring mvcと同様に働いています。私は今私のコードをSpring Bootに移しています。メジャーは本当に変わったことはありません。それがSpring Bootと何か関係があるかどうか、または私が既存のコードを乱してしまったかどうかわかりません。

+0

エラー状態として戻り値の型が一致しないため、コードが機能しているかどうかは疑問です。最初は 'SqlRowSetResultSetExtractor'(' ResultSetExtractor'の実装です)を拡張するのではなく、 'ResultSetExtractor'を実装したと思います。 –

+0

@ M.Deinum私は100%私はポストで言及したように働いたと確信しています。しかし、私は 'SqlRowSetResultSetExtractor'を拡張するのではなく、' ResultSetExtractor'を使って実装しようとしました。それは私がこれに対してより良い答えを得なければ、今のところうまくいくようです。 – Reema

+1

また、あなたが指しているドキュメントはSpring 2.5の古いバージョンです。より新しいバージョンを使用している場合、 'ResultSetExtractor'は実際には' ResultSetExtractor 'なので、それは汎用であり、' ResultSetExtractor 'の' SqlRowSetResultSetExtractor'に対してです。だからもしあなたがまた春をアップグレードすればそれは失敗するのは論理的です。それが働いていたにもかかわらず、それはそれが想定されていた方法ではありませんでした。 –

答えて

0

SqlRowSetResultSetExtractorの代わりにResultSetExtractorを実装する必要があります。最初にやったのはSqlRowSetResultSetExtractorで、queryForRowSetの方法ではJdbcTemplateが使用しているので、拡張しないでください。 ResultSetExtrator春3.0のよう

は、ジェネリックで、ResultSetExtractor<T>を読み取り、あなたがObjectとしてコンパイル例外が発生します行うようにメソッドをオーバーライドする際SqlRowSetResultSetExtractorことは、その後ResultSetExtractor<SqlRowSet>につながる!= SqlRowSet

短い実装では、ResultSetExtractorが意図されていました。

public UserExtractor implements ResultSetExtractor<User> { 

    public User extractData(ResultSet rs) throws SQLException, DataAccessException { ... } 

}