【发布时间】:2017-05-30 15:04:04
【问题描述】:
我正在使用以下代码从结果集中提取数据。我遇到了编译错误:
返回类型与SqlRowSetResultSetExtractor.extractData(ResultSet)不兼容将extractData(...)的返回类型改为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;
}
}
根据我的研究here,应该没问题。这在我之前也适用于 spring mvc。我现在将我的代码移动到 Spring Boot。没有什么重大的改变。想知道它是否与 Spring Boot 有任何关系,或者我是否搞砸了我现有的代码。
【问题讨论】:
-
我怀疑该代码是否有效,因为如错误所述,返回类型不匹配。我怀疑最初您实现了
ResultSetExtractor,而不是扩展SqlRowSetResultSetExtractor(这是ResultSetExtractor的实现)。 -
@M.Deinum 我 100% 确信它按照我在帖子中提到的方式工作。但是,我现在尝试使用
ResultSetExtractor而不是扩展SqlRowSetResultSetExtractor来实现。除非我得到更好的答案,否则这似乎暂时有效。 -
您指向的文档也是Spring 2.5的旧版本。如果您使用更新的版本,
ResultSetExtractor实际上是ResultSetExtractor<T>,所以它是通用的,对于SqlRowSetResultSetExtractor来说是ResultSetExtractor<SqlRowSet>。因此,如果您还升级了 spring,那么它失败是合乎逻辑的。除此之外,虽然它有效,但它不是应该的方式。 -
@M.Deinum 现在说得通了。我现在使用的是 Spring 4.3.7 并且已经使用了this
标签: java spring spring-mvc jdbc spring-boot